C的编程思路,其它的语言不会
1,用for循环,实现一维数组a【】,从第一个输入到第六个字母,然后再用for循环把a【】从0到5都减29,赋值到b【】,把数组b以字符变量输出
2,同理,把密文加29,然后以字符变量输出
具体程序不难,我这里没有c编译软件。。。。。
这个程序,允许输入一串小写英文,如:goodbey,然后将它们变成密码:jrrgehb。
变换规律是:按照英文字母表,明文字母向下第三个,就是密码。
见插图。
char M[100]; //明文、密码的存放空间
char C[100];
int K = 3, i; //K=3, 向下第三个
printf("请输入明文M(注意不要输入空白串)\n"); //显示
gets(M); //输入
for(i=0;M[i]!='\0';i++) //逐个字母进行变换
C[i]=(M[i]-'a'+K)%26+'a'; //加密计算公式
C[i]='\0'; //密码末尾加上终止符号
printf("结果是:\n%s\n",C); //显示密码
一、历史上的密码
1、凯撒密码
凯撒密码诞生于古罗马,凯撒密码是通过将明文中所使用的字母表按一定的字数平移来进行加密的。
凯撒密码加解密如下所示:
对yoshko进行凯撒密码加密后得到密文为:BRVKLNR
用凯撒密码进行解密:
2、简单替换密码
将明文中所使用的字母表替换为另外一套字母表的密码称为简单替换,凯撒密码也属于其中的一种。
3、Enigma
Enigma是一种由键盘、齿轮、电池和灯泡所组成的机器,通过这台机器就能够完成加密和解密。
二、破译密码的方法
1、暴力破解
将所有可能出现的密钥都尝试一遍的方法。
2、频率分析来破译密码
使用暴力破解很难破译简单替换密码,但是使用频率分析的密码破译方法,能够对简单替换密码进行破译。
根据苏维托尼乌斯的记载,恺撒曾用此方法对重要的军事信息进行加密: 如果需要保密,信中便用暗号,也即是改变字母顺序,使局外人无法组成一个单词。如果想要读懂和理解它们的意思,得用第4个字母置换第一个字母,即以D代A,余此类推。
同样,奥古斯都也使用过类似方式,只不过他是把字母向右移动一位,而且末尾不折回。每当他用密语写作时,他都用B代表A,C代表B,其余的字母也依同样的规则;用A代表Z。
扩展资料:
密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾经使用密码来传递信息,即所谓的“恺撒密码”,它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。因据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。这是一种简单的加密方法,这种密码的密度是很低的,只需简单地统计字频就可以破译。 现今又叫“移位密码”,只不过移动的为数不一定是3位而已。
参考资料来源:百度百科-凯撒密码
常见的推理密码有以下四种:
1、莫斯电码,莫斯电码由划和点两种字符表示,划 一般是三个点的长度,点划之间的间隔是一个点的长度,字符之间的间隔是三个点的长度。
2、凯撒密码,凯撒密码又叫替代密码,是古代罗马凯撒大帝用以保护重要军情的加密系统。
3、栅栏密码,栅栏密码,就是把要加密的明文分成 N 个一组。
4、四方密码,四方密码是一种对称式加密方法,是法国人发明的,这种方法是将两个字母分成一组,然后采用多个字母来替换。