一、 恺撒密码
1简单介绍
凯撒密码是古时候欧洲常用的一种加密方式:英文一共26个字母,它的加密方式是将这26个字母分别平移固定的位数,
假设位数=3,那么A=>D,B=>E,如下图:
如果想加密一个单词HELLO,根据上面的唯一对比,加密后的结果应该是LHOOR。颠倒字母后的顺序,使得常人无法读懂这些语句或者单词。如何解密呢,也很简单,只需要将收到的单词向前平移3个位置,就可以恢复到加密前的单词HELLO了。
2破解
破解凯撒密码的方法很多,有一种暴力破解的方式,就是“遍历”。根据凯撒密码的加密方式,平移固定的位数,26个英文字母总共可以平移的方式是26种,假如位数n=26,其实相当于没有平移,A=>A,循环了一次。
进行暴力破解:
n=1:LHOOR=>KGNNQ
n=2:LHOOR=>JFMMP
n=3:LHOOR=>HELLO
这样就破解了,可以推算发位数n=3,其实就是秘钥=3,
最多尝试25次即可推算出加密的n值等于多少(当然这里只是讨论原理,不排除真实情况,可能凑巧某一个错误的n值解密出来的也是一个完整的单词或一段话的情况)。
二、 替换密码
1简单介绍
替换密码和恺撒密码原理有些类似,个人感觉相当于恺撒密码的变种,替换密码增加了字母替换的随机性
举个简单的例子,A=>G,B=>X,C=>K
这里ABC等26个字母都随机指向了“密码”本上的另一个随机的字母,这下就比较难反向推算出“秘钥”是多少了,数量级完全不一样。
简单的算一下可能存在的情况:
A=>有25种表示方式BCD…
B=>有除A以外24种方式表示CDE
…
那么秘钥的存在情况是:
N=25!种方式,远远大于恺撒密码的26。
2破解
面对25!数量级的加密方式,使用暴力破解的方式不再实用了,但是可以使用另一种方法,统计学
通过大量扫描英文书籍,可以得出如下结果(,这里只探究原理,并不追究这个统计的准确性):
26个字母在日常用语中的使用频率并不一样,比如字母E的使用频率遥遥领先,字母Z使用频率最低,这个相当于语言所残留在文字中的指纹,很难察觉但是真实存在。
根据这个原理,扫描“随机密码”文本,统计出各个字母的使用频率分布,找出使用频率最高的那个字母,极可能就是加密后的字母E。
3随机加密还有很多变种,双重加密,擦掉“指纹”使得加密方式更进一步加固,不得不感叹古人的智慧,数学之美真奇妙。
#include <stdioh>
#include <stringh>
void main()
{ char c1='C',c2='h',c3='i',c4='n',c5='a';
c1=c1+4;
c2=c2+4;
c3=c3+4;
c4=c4+4;
c5=c5+4;
printf("%c%c%c%c%c",c1,c2,c3,c4,c5);}。
手上没截图,就文字表示了,按这个 *** 作就可以的。
1、编程序是指在利用电子计算机自动处理问题,人们根据自己对信息处理的要求,给电子计算机设计指令。Tiny BASIC,由Bob Albrecht和Dennis Allison设计(由Dick Whipple和John Arnold实现),运行在2KB内存的微型计算机上。一台4KB的机器是较为合适的,它将有2KB的内存应用于这个程序上。
2、Bill Gates和Paul Allen编写的一个BASIC版本以抽取每份拷贝版税的形式销售给MITS(Micro Instrumentation and Telemetry Systems)。MITS生产Altair,这是一种8080结构的微型计算机。Scheme,一个LISP的"方言",由GL Steele和GJ Sussman设计。Pascal用户手册和报告出版,Jensen和Wirth编写。许多人至今都认为它是Pascal方面权威的参考书籍。BW Kerninghan描述了RATFOR--RATional FORTRAN。
for (int x=0; x<=9; x++){
String pwd1="";
String pwd2="";
if((x+1)/3==0){
pwd1 +=x+1;
pwd2 +=1+x;
开密码的方法(pwd1);
开密码的方法(pwd2);
}
}
以上就是关于密码学基础一全部的内容,包括:密码学基础一、编程序将China译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母.例如,字母A后面、小明忘了一个两位数的密码,密码中含有1,并且密码能被3整除,请利用for循环编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)