これは私が C で書いた関数です。これは Linux コンソールの 'cat' コマンドで実行され、それに txt ファイルを渡し、'encode' または 'decode' のどちらが必要かを関数に伝え、その後にパスワードを入力します..'encrypted ' 暗号化されたファイルを入力としてプログラムを再度実行し、デコード + 正しいパスワードを引数として使用することによってのみ (ほぼ) 復号化できるファイル...
Linuxマシンのコマンドコンソールからこのコードを実行できます
cat your_txt_file | ./ThisProgram encode password > encoded_file
cat encoded_file | ./ThisProgram decode password > decoded_file
この 'SHOULD および時々' は、encoded_file / decoded_file という 2 つの txt ファイルを生成します。
your_txt_file と decoded_file の間に違いは見られないはずです
int main(int argc, char *argv[]) {
char buffer;
char *pw = argv[2];
int ptrpw = 0;
int code = 0;
if (strcmp(argv[1], "encode") == 0) {
code= cumSumCrypt(pw, code);
while ( scanf("%c", &buffer) != EOF ) {
printf("%c", (((int)buffer + code) % 256));
}
}
if (strcmp(argv[1], "decode") == 0) {
code= cumSumCrypt(pw, code);
while ( scanf("%c", &buffer) != EOF ) {
printf("%c", (256 + ((int)buffer - code)) % 256);
}
}
return 0;
}
int cumSumCrypt(char *pw, int sum){
int i;
for(i = 0; i < sizeof pw; i++){
sum +=(int) pw[i];
}
return sum;
}
問題は、プログラムを実行すると、それが生成する中間ファイルが生成されることがあることです.暗号化されたファイルはtxtファイルではない場合がありますが、それでも復号化を通過でき、最終出力は問題ありません..プログラムはそれを満たしました目的ですが、大学の周りに尋ねたり、グーグルなどで調べたりしましたが、奇妙な行動を説明できる人を見つけることができません.
生成された暗号化ファイルを .txt で開くことができるかどうかは、与えるパスワードによって異なります。pw として「hl」を指定すると、暗号化されたファイルが不適格になりますが、それでも開くことができます。これは WAI です。しかし、pw として「hello」を実行すると、開くことができないファイルが作成されますが、コンソールで「cat」を通過して、エラーなしで復号化できます。
プログラム自体は、入力ファイル内のすべての文字に対して Caeser シフトを実行します。シフトのサイズは、パスワードの文字の合計であり、txt ファイルの文字を合計に追加した後のモジュロ 256 です。