1
以下代碼會生成一個文本文件,其中包含從不同的可讀文本文件派生的編碼消息。使用給定算法解密消息
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
main()
{
FILE *f, *f_enc;
char c, c_enc;
int ind, a[26], r_val;
srandom(time(NULL));
for (ind=0; ind<26; ind++) a[ind]=-1;
for (ind=0; ind<26; ind++){
do
r_val=random()%26;
while (a[r_val]!=-1);
a[r_val]=ind;
}
f=fopen("plain.txt","r");
f_enc=fopen("cipher.txt","w");
while (!feof(f)) {
c=fgetc(f);
if ((c>='A' && c<='Z')||(c>='a' && c<='z')) {
if (c>='A' && c<='Z') c = c + 'a' - 'A';
c=a[c-'a']+'a';
}
fputc(c,f_enc);
}
fclose(f);
fclose(f_enc);
}
我不清楚的是代碼實現編碼消息的整體算法。
- 它是否從字符中減去ASCII值('a - 'A)以產生編碼字符?
一個例子輸出如下:
xohq xpu ouuf yubliu spieqxkhq, hzj hcc xpilnap xpu plnqu
tln slncj puhi ku yuhxeza xpu slkmnxui oexp xpu klnqu.
xpu jeqf ohq pnza nm ez xpu jeqf jieru oexp shiu,
hzj, zuujcuqq xl qht, e zuhict mnccuj lnx kt phei.
e ahru nm bli xphx zeapx, alx iuhjt bli yuj,
hzj olzjuiuj, "qplncj e gnqx ynt shijq ezqxuhj?"
khkh hzj jhjjt phj gnqx pex xpu pht,
ql e xlcj xpuk allj zeapx, hzj ouzx lz kt oht.
我要去嘗試反向工程這看看我是否能得到阿霍德這是怎麼回事的。 歡迎任何猜測!
看來如果沒有加密過程中使用的原始'a'數組的副本,將難以解密密文。 –