密码学基础一

一、 恺撒密码
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.变种
随机加密还有很多变种,双重加密,擦掉“指纹”使得加密方式更进一步加固,不得不感叹古人的智慧,数学之美真奇妙。