Изменить содержимое файла - PullRequest
0 голосов
/ 22 декабря 2011

Может кто-нибудь сломать этот код для меня? Я знаю, что это меняет текст из пользовательского файла, и я знаю, что это может быть очень полезно для меня. Какова цель "~"? Как можно изменить этот код, чтобы слово за словом читать пользовательский файл, а затем изменять его, используя те же формулы?

// first value in the file is the key
if ( fread(&key, sizeof(char), 1, infile) )
{ 
    key = ~key;  
}
while( fread(&fval ,sizeof(short), 1, infile) )
{
      fputc( (fval / 2) - key, outfile );  
} 

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

key = ~key заменяет все биты ключа

Вы знаете о битах?

ascii A (65) равно 100 0001 в двоичном формате, так что '~' это простоменяет местами каждый 1 для 0 и каждый 0 для 1, давая 011 1110 (62), что составляет >

Так что все A в вашем документе будут заменены на > и аналогично для любого другого персонажа.Хорошая особенность ~ в том, что дешифрование - это точно такой же процесс - просто поменяйте местами каждый бит обратно.

ps.Это не совсем шифрование mil-spec!

1 голос
/ 22 декабря 2011

Комментарии встроены!

#include <stdio.h>

int main(void)
{
    /* Integer value of 'A' is 65 and 
       binary value is 01000001 */
    char a='A';      
    printf("a=%d\n", a);

    /* ~a is binary inverse of a so 
       ~01000001 = 10111110 */
    a=~a;
    printf("a=%d\n", a);

    /* easier example */
    /* ~0 = 11111111 times # of bytes needed
       to store int (whose value is nothing 
       but negative one) */

    int i=0;
    printf("i=%d\n", i);

    i=~i;
    printf("i=%d\n", i);

    return 0;
}

$ ./a.out
a=65
a=-66
i=0
i=-1
$

С вышеупомянутой подсказкой, не могли бы вы попробовать прочитать код и поделиться своими комментариями.

OTOH, что такое crypt? какой у него тип? какое значение хранится в нем?!

Для более побитовых операций, пожалуйста, обратитесь на эту страницу!

...