XOR暗号

http://www.geocities.jp/ky_webid/algorithm/018.html

暗号というか単にXORが同じ演算を二回行うと元の値に戻ることを利用しただけのものですね。

実際にプログラムを作って試してみましょう。

#include <stdio.h>
#include <string.h>

int main (void) {
    char enc[100];
    size_t i;
    int key = 123145;
    
    puts("値を入力してください");
    scanf("%s",enc);
    
    // 暗号化
    for(i=0;i<strlen(enc);i++){
        enc[i] ^= key;
    }
    printf("%s\n",enc);
    
    // 複号
    for(i=0;i<strlen(enc);i++){
        enc[i] ^= key;
    }
    printf("%s\n",enc);
    
    return 0;
}
$ main
値を入力してください
honadijfekaazet
afghm`colbhhsl}
honadijfekaazet

うまく元の値に戻っていますね。