这是我用 C 语言编写的一个函数,它使用 linux 控制台“cat”命令运行,你将一个 txt 文件传递给它,然后告诉函数你想要“编码”还是“解码”,然后是密码。它会产生一个“加密” ' 只能(几乎)通过以加密文件作为输入并解码+正确密码作为参数再次运行程序来解密该文件...
您可以像这样通过Linux机器上的命令控制台运行此代码
cat your_txt_file | ./ThisProgram encode password > encoded_file
cat encoded_file | ./ThisProgram decode password > decoded_file
这个“应该有时”确实会产生两个 txt 文件,encoded_file / decoded_file。
您应该看到 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中打开取决于你给它的密码,我发现给它'hl'作为pw会使加密文件不合格,但仍然可以打开这是WAI,但是 'hello' 作为 pw 会生成一个我无法打开的文件......但仍然可以通过控制台中的 'cat' 并解密它而不会出错。
程序本身对输入文件中的每个字符进行 Caeser 移位,移位的大小是密码字符的总和,在将 txt 文件的字符添加到总和后以 256 为模。