2011-12-22 15 views
0

誰かが私のためにこのコードを分解できますか?私はそれがユーザーファイルからテキストを変更することを知っています。 "〜"の目的は何ですか?このコードを修正して、単語ごとにユーザーファイルの単語を読み取り、同じ種類の式を使用して変更することはできますか?キーファイルの内容を変更する

// 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

'key =〜key'は、' key'のビット反転に対して 'key'を設定します。 –

+0

bitwise-inverse ...私には何も意味しない私は辞書を出すでしょう! – adohertyd

+0

あなたがここで何を期待しているかは不明です。何を試しましたか? – Nick

答えて

2

key = ~keyスワップすべてのビットは、あなたはビットについて知っていますか?

アスキーA(65)は '〜' これは単に0ための各1ので、これが置き換えられます>

である011 1110(62)を与える1ための各0スワップしているのバイナリでは100 0001であるので、文書内のAはすべて>で、他のすべての文字も同様です。 〜についての素敵な点は、解読するのとまったく同じプロセスであることです。ちょうど各ビットを元に戻します。

ps。まさにmil-spec暗号化ではありません!

+0

Aに5を追加したいのですが?この交換ビットはありませんか?単にAを読み、5を加えて新しいファイルに出力しますか?そして、ファイル内のすべての文字についてそのプロセスを繰り返しますか? – adohertyd

+0

はその後、単純に+ = 5キー、文字は私が今理解コンピュータ –

1

コメントインライン!上記のヒントを使用して

#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とは何ですか?そのタイプは何ですか?そこに保存されている値は何ですか?

ビット単位の操作については、thisページを参照してください。

+0

で数字だけですか、それは〜バイナリ正しい中1人の持つすべての1の0とし、すべての0年代を置き換えますか?申し訳ありませんが、秘密は鍵になることを意図しています! – adohertyd

+0

はい!あなたは正しいです! –

関連する問題