[转载]凯撒密码解密系统
/*****************************************************/ /* 凯撒密码解密系统 */ /* 主要功能: */ /* 运用穷举法实现凯撒加密密码的破译 */ #include <stdio.h> void main() { int i,k,t; char j,temp[26],m[22]; char c[22]={'j','b','c','r','c','l','q','w','c','r', 'v','n','b','j','e','n','b','w','r','w', 'n'}; for(i=1,j='a';i<=26,j<='z';i++,j++) { temp[i]=j; } for(k=1;k<=26;k++) { printf("the %dth result is: ",k); for(i=0;i<22;i++) { for(t=1;t<=26;t++) { if(c[i]==temp[t]) { if(t-k>0) t=(t-k)%26; else if(t-k<0) t=(t-k+26)%26; else t=26; m[i]=temp[t]; break; } } printf("%c",m[i]); } printf("\n"); } } |
凯撒大帝曾用一种初级的密码来弄乱他传达的消息。对那些他认为能够分享密码的人,便告诉他们如何重新组合回原来的消息。这种密码便是著名的“凯撒密码”。这是一个古老的加密方法,当年凯撒大帝行军打仗时用这种方法进行通信,因此得名。它的原理很简单,其实就是单字母的替换。让我们看一个简单的例子:“This is Caesar Code”。用凯撒密码加密后字符串变为“vjku ku Ecguct Eqfg”。看起来似乎加密得很“安全”。可是你可以尝试一下,把这段很难懂的东西每一个字母换为字母表中前移2位的字母……哦,结果出来了。凯撒密码的字母对应关系:
A b c d e f g h i … x y z
C d e f g h I j k … z a b
单表置换的一个特例而已。
[此贴子已经被作者于2006-4-21 1:16:30编辑过]