有意思,刷个密码学吧
密钥:分为加密密钥和解密密钥。
明文:没有进行加密,能够直接代表原文含义的信息。
密文:经过加密处理处理之后,隐藏原文含义的信息。
加密:将明文转换成密文的实施过程。
解密:将密文转换成明文的实施过程。
———加密(encryption)—————>
明文(plaintext) 密文(ciphertext)
<———解密(decryption)————
最古典的两个加密技巧是:
置换(Transposition cipher):将字母顺序重新排列,例如‘help me’变成‘ehpl em’。
替代(substitution cipher):有系统地将一组字母换成其他字母或符号,例如‘fly at once’变成‘gmz bu podf’(每个字母用下一个字母取代)。凯撒密码是最经典的替代法,据传由古罗马帝国的皇帝凯撒所发明,用在与远方将领的通讯上,每个字母被往后位移三格字母所取代。
一种方法是把字母随意配对互换,如套用在罗马字母中,可有得出下表:
A B C D E F G H I J K L M
Z Y X W V U T S R Q P O N
(摘自灰灰的密码学笔记)
一、【密码常识】
字母表顺序-数字
加密的时候,经常要把A~Z这26个字母转换成数字,最常见的一种方法就是取字母表中的数字序号。A代表1,B代表2,C代表3...
字母 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
数字 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
进制转换密码
例如二进制: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...的顺序那就很难背出来了。一个很熟悉的单词,如果按相反的顺序拼写,可能就会感到很陌生。
例如“love”字母倒过来拼就是“evol”。
具体加密时倒序有很多种方案,需要灵活运用。例如:
每个单词的倒序:siht si a tset - this is a test
整句的倒序:tset a si siht - this is a test
数字的倒序:02 50 91 02 - 20 05 19 20(test)
间隔
单词之间的间隔一般使用空格。在加密时常常要去掉空格,但有时某些字母或数字来替代空格也不失为一种好的加密方案。错误空格位置也会起到很强的误导作用。
例如:t hi sis at est - this is a test
字母频率
频率分析法可以有效的破解单字母替换密码。
关于词频问题的密码,我在这里提供英文字母的出现频率给大家,其中数字全部是出现的百分比:
a 8.2 b 1.5 c 2.8 d 4.3
e 12.7 f 2.2 g 2.0 h 6.1
i 7.0 j 0.2 k 0.8 l 4.0
m 2.4 n 6.7 o 7.5 p 1.9
q 0.1 r 6.0 s 6.3 t 9.1
u 2.8 v 1.0 w 2.4 x 0.2
y 2.0 z 0.1
二、各种密码
【凯撒密码(Caesar Shifts, Simple Shift)】
也称凯撒移位,是最简单的加密方法之一,相传是古罗马恺撒大帝用来保护重要军情的加密系统,它是一种替代密码。
加密公式:密文 = (明文 + 位移数) Mod 26
解密公式:明文 = (密文 - 位移数) Mod 26
以《数字城堡》中的一组密码为例:
HL FKZC VD LDS
只需把每个字母都按字母表中的顺序依次后移一个字母即可——A变成B,B就成了C,依此类推。因此明文为:
IM GLAD WE MET
英文字母的移位以移25位为一个循环,移26位等于没有移位。所以可以用穷举法列出所有可能的组合
【栅栏密码(The Rail-Fence Cipher)】
也称栅栏易位(Columnar Transposition),即把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。栅栏密码是一种置换密码。
例如密文:TEOGSDYUTAENNHLNETAMSHVAED
解密过程:先将密文分为两行
T E O G S D Y U T A E N N
H L N E T A M S H V A E D
再按上下上下的顺序组合成一句话
THE LONGEST DAY MUST HAVE AN END.
.............................................................
加密时不一定非用两栏,还是举《数字城堡》中的一个例子,密文为:
PFEE SESN RETM MFHA IRWE OOIG MEEN NRMA ENET SHAS DCNS IIAA IEER BRNK FBLE LODI
去掉空格:PFEESESNRETMMFHAIRWEOOIGMEENNRMAENETSHASDCNSIIAAIEERBRNKFBLELODI
共64个字符,以8个字符为一栏,排列成8*8的方阵(凯撒方阵):
P F E E S E S N
R E T M M F H A
I R W E O O I G
M E E N N R M A
E N E T S H A S
D C N S I I A A
I E E R B R N K
F B L E L O D I
从上向下竖着读:PRIMEDIFFERENCEBETWEENELEMENTSRESMONSIBLEFORHIROSHIMAANDNAGASAKI
插入空格:PRIME DIFFERENCE BETWEEN ELEMENTS RESMONSIBLE FOR HIROSHIMA AND NAGASAKI (广岛和长崎的原子弹轰炸的最主要区别)
.............................................................
栅栏密码也可以用于中文,不过比较容易破解。
明文: 这是中文的栅栏密码
密文(3*3方阵):这文栏是的密中栅码
由于中文用规则的栅栏比较容易破解,所以产生了一些变体,例如道家心法密籍《天仙金丹心法》中的一段加密方法。密文如下:
○ 茫 天 : 摹 然 月 终 为 鼎 半 是 真 灭 器 轮 假 不 但 伸 净 著 定 分 泥 万 ○ 无 ○ 光 人 经 法 一 从 尘 色 返 我 权 自 法 中 妙 大 空 照 生 屈 来 好 路 形 神 海 ○ 便 还 未 归
○ 茫
天 : 摹
然 月 终 为
鼎 半 是 真 灭
器 轮 假 不 但 伸
净 著 定 分 泥 万 ○
无 ○ 光 人 经 法 一 从
尘 色 返 我 权 自 法 中 妙
大 空 照 生 屈 来 好 路 形 神
海 ○ 便 还 未 归
明文(从上向下竖着读):天然鼎器净无尘,大海茫茫月半轮。著色空摹终是假,定光返照便为真。不分人我生还灭,但泥经权屈未伸。万法自来归一法,好从中路妙形神。
明文:没有进行加密,能够直接代表原文含义的信息。
密文:经过加密处理处理之后,隐藏原文含义的信息。
加密:将明文转换成密文的实施过程。
解密:将密文转换成明文的实施过程。
———加密(encryption)—————>
明文(plaintext) 密文(ciphertext)
<———解密(decryption)————
最古典的两个加密技巧是:
置换(Transposition cipher):将字母顺序重新排列,例如‘help me’变成‘ehpl em’。
替代(substitution cipher):有系统地将一组字母换成其他字母或符号,例如‘fly at once’变成‘gmz bu podf’(每个字母用下一个字母取代)。凯撒密码是最经典的替代法,据传由古罗马帝国的皇帝凯撒所发明,用在与远方将领的通讯上,每个字母被往后位移三格字母所取代。
一种方法是把字母随意配对互换,如套用在罗马字母中,可有得出下表:
A B C D E F G H I J K L M
Z Y X W V U T S R Q P O N
(摘自灰灰的密码学笔记)
一、【密码常识】
字母表顺序-数字
加密的时候,经常要把A~Z这26个字母转换成数字,最常见的一种方法就是取字母表中的数字序号。A代表1,B代表2,C代表3...
字母 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
数字 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
进制转换密码
例如二进制: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...的顺序那就很难背出来了。一个很熟悉的单词,如果按相反的顺序拼写,可能就会感到很陌生。
例如“love”字母倒过来拼就是“evol”。
具体加密时倒序有很多种方案,需要灵活运用。例如:
每个单词的倒序:siht si a tset - this is a test
整句的倒序:tset a si siht - this is a test
数字的倒序:02 50 91 02 - 20 05 19 20(test)
间隔
单词之间的间隔一般使用空格。在加密时常常要去掉空格,但有时某些字母或数字来替代空格也不失为一种好的加密方案。错误空格位置也会起到很强的误导作用。
例如:t hi sis at est - this is a test
字母频率
频率分析法可以有效的破解单字母替换密码。
关于词频问题的密码,我在这里提供英文字母的出现频率给大家,其中数字全部是出现的百分比:
a 8.2 b 1.5 c 2.8 d 4.3
e 12.7 f 2.2 g 2.0 h 6.1
i 7.0 j 0.2 k 0.8 l 4.0
m 2.4 n 6.7 o 7.5 p 1.9
q 0.1 r 6.0 s 6.3 t 9.1
u 2.8 v 1.0 w 2.4 x 0.2
y 2.0 z 0.1
二、各种密码
【凯撒密码(Caesar Shifts, Simple Shift)】
也称凯撒移位,是最简单的加密方法之一,相传是古罗马恺撒大帝用来保护重要军情的加密系统,它是一种替代密码。
加密公式:密文 = (明文 + 位移数) Mod 26
解密公式:明文 = (密文 - 位移数) Mod 26
以《数字城堡》中的一组密码为例:
HL FKZC VD LDS
只需把每个字母都按字母表中的顺序依次后移一个字母即可——A变成B,B就成了C,依此类推。因此明文为:
IM GLAD WE MET
英文字母的移位以移25位为一个循环,移26位等于没有移位。所以可以用穷举法列出所有可能的组合
【栅栏密码(The Rail-Fence Cipher)】
也称栅栏易位(Columnar Transposition),即把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。栅栏密码是一种置换密码。
例如密文:TEOGSDYUTAENNHLNETAMSHVAED
解密过程:先将密文分为两行
T E O G S D Y U T A E N N
H L N E T A M S H V A E D
再按上下上下的顺序组合成一句话
THE LONGEST DAY MUST HAVE AN END.
.............................................................
加密时不一定非用两栏,还是举《数字城堡》中的一个例子,密文为:
PFEE SESN RETM MFHA IRWE OOIG MEEN NRMA ENET SHAS DCNS IIAA IEER BRNK FBLE LODI
去掉空格:PFEESESNRETMMFHAIRWEOOIGMEENNRMAENETSHASDCNSIIAAIEERBRNKFBLELODI
共64个字符,以8个字符为一栏,排列成8*8的方阵(凯撒方阵):
P F E E S E S N
R E T M M F H A
I R W E O O I G
M E E N N R M A
E N E T S H A S
D C N S I I A A
I E E R B R N K
F B L E L O D I
从上向下竖着读:PRIMEDIFFERENCEBETWEENELEMENTSRESMONSIBLEFORHIROSHIMAANDNAGASAKI
插入空格:PRIME DIFFERENCE BETWEEN ELEMENTS RESMONSIBLE FOR HIROSHIMA AND NAGASAKI (广岛和长崎的原子弹轰炸的最主要区别)
.............................................................
栅栏密码也可以用于中文,不过比较容易破解。
明文: 这是中文的栅栏密码
密文(3*3方阵):这文栏是的密中栅码
由于中文用规则的栅栏比较容易破解,所以产生了一些变体,例如道家心法密籍《天仙金丹心法》中的一段加密方法。密文如下:
○ 茫 天 : 摹 然 月 终 为 鼎 半 是 真 灭 器 轮 假 不 但 伸 净 著 定 分 泥 万 ○ 无 ○ 光 人 经 法 一 从 尘 色 返 我 权 自 法 中 妙 大 空 照 生 屈 来 好 路 形 神 海 ○ 便 还 未 归
○ 茫
天 : 摹
然 月 终 为
鼎 半 是 真 灭
器 轮 假 不 但 伸
净 著 定 分 泥 万 ○
无 ○ 光 人 经 法 一 从
尘 色 返 我 权 自 法 中 妙
大 空 照 生 屈 来 好 路 形 神
海 ○ 便 还 未 归
明文(从上向下竖着读):天然鼎器净无尘,大海茫茫月半轮。著色空摹终是假,定光返照便为真。不分人我生还灭,但泥经权屈未伸。万法自来归一法,好从中路妙形神。
还没人转发这篇日记