字母表顺序和数字
加密的时候,经常要把A~Z这26个字母转换成数字,最常见的一种方法就是取字母表中的数字序号。A代表1,B代表2,C代表3...以此类推
最最简单的
进制转换密码
Mod法
倒序法
间隔法
反字母表法
随机乱序字母
进制转换密码
例如二进制:1110 10101 1101 10 101 10010 1111 1110 101
转为十进制:14 21 13 2 5 18 15 14 5
对应字母表:number
Mod法
我们可以对字母序号进行数学运算,然后把所得的结果作为密文。当运算结果大于26或小于1的时候,我们希望把这个数值转为1~26的范围,那么取这个数除以26的余数即可
Mod就是求余数的运算符,有时也用“%”表示。例如 29 Mod 26 = 3,或写成 29 % 26 = 3,意思是29除以26的余数是3
倒序法
加密时为经常要对字符进行倒序处理。如果让你按abcdef...的顺序背出字母表的每个字母会很容易,但是如果是zyxwvu...的顺序那就很难背出来了。一个很熟悉的单词,如果按相反的顺序拼写,可能就会感到很陌生。 例如“dacmaster”字母倒过来拼就是“retsamcad”
具体加密时倒序有很多种方案,需要灵活运用。
例如:
每个单词的倒序:siht si a tset - this is a test
整句的倒序:tset a si siht - this is a test
数字的倒序:02 50 91 02 - 20 05 19 20
间隔法
单词之间的间隔一般使用空格。在加密时常常要去掉空格,但有时某些字母或数字来替代空格也不失为一种好的加密方案。错误空格位置也会起到很强的误导作用
例如:t hi sis at est - this is a test
反字母表法
就是丹布朗在《达芬奇密码》一书中提到的埃特巴什码(Atbash Cipher)。它的原理是取一个字母,指出它位于字母表正数第几位,再把它替换为从字母表倒数同样的位数后得到的字母。如:E被替换为V,N被替换为M等。
明文:sophia
密文:hlksrz
随机乱序字母
即单字母替换密码。重排密码表二十六个字母的顺序,密码表会增加到四千亿亿亿多种,能有效的防止用筛选的方法检验所有的密码表。这种密码持续使用几个世纪,直到有人发现了破解大法
明文:forest
密文:gbmrst
破解大法
说到这,不得不提阿拉伯人,在阿拉伯黄金时代,他们发明频率分析法,终结了几个世纪的单字母替换密码,阿拉伯人最早在数学和医学都是很领先了,不要一提到阿拉伯人,不是土豪就是身上捆满炸弹那种,他们的祖先很令人尊重
频率分析法可以有效的破解单字母替换密码,特别是现代计算机的出现,替换法密码基本上可以秒破
关于词频问题,这里提供英文字母的出现频率给大家,其中数字全部是出现的百分比:
词频法其实就是计算各个字母在文章中的出现频率,然后大概猜测出明码表,最后验证自己的推算是否正确,这种方法由于要统计字母出现频率,需要花费时间较长。