1

これは私が 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 です。

4

1 に答える 1