栅栏密码- crypto-wiki - 密码学简介
文章推薦指數: 80 %
所谓栅栏密码,就是将要加密的明文分为N个一组,再从每组的选出一个字母连起来,形成一段无规律的密文。
栅栏密码并非一种强的加密法,其加密原理限制了密钥的最高数量不 ...
Skiptocontent
密码学简介
编码与解码
古典密码学
现代密码学
FdmhbxcwuhFdmhyvvngfb
school
crypto-wiki
crypto-wiki
密码学简介
密码学简介
密码学简介
编码与解码
编码与解码
简介
ASCII编码
Base64编码
Base32编码
Base16编码
XXencode编码
UUencode编码
URL编码
Unicode编码
欢迎补充
古典密码学
古典密码学
古典密码学浅析
古典密码学分类
古典密码学分类
换位密码
替换密码
分组密码
有向图密码
密码分析
隐写密码
换位密码
换位密码
密码棒密码
平移密码
栅栏密码
栅栏密码
Tableofcontents
栅栏密码简介
栅栏密码分类
N型栅栏密码
V型栅栏密码
栅栏密码的程序实现
栅栏密码的破解
栅栏密码小结
曲路密码
列换位密码
双列换位密码
中断换位密码
替换密码
替换密码
猪圈密码
埃特巴什码
凯撒密码
仿射密码
简单替换密码
维吉尼亚密码
分组密码
分组密码
波利比奥斯方阵密码
跨棋盘密码
ADFGX密码
ADFGVX密码
双密码
分组摩斯密码
有向图密码
有向图密码
普莱费尔密码
二方密码
四方密码
希尔密码
密码分析
密码分析
文本表征简介
卡方统计
重合指数
频率分析
四元组统计
唯一解距离
单词统计
隐写密码
隐写密码
培根密码
格栅密码
欢迎补充
现代密码学
现代密码学
现代密码学浅析
FdmhbxcwuhFdmhyvvngfb
FdmhbxcwuhFdmhyvvngfb
关于我们
Tableofcontents
栅栏密码简介
栅栏密码分类
N型栅栏密码
V型栅栏密码
栅栏密码的程序实现
栅栏密码的破解
栅栏密码小结
栅栏密码
必读
上节中的密码棒密码其实也是栅栏密码的一种
栅栏密码可分为N型和V型两种
栅栏密码简介¶
所谓栅栏密码,就是将要加密的明文分为N个一组,再从每组的选出一个字母连起来,形成一段无规律的密文。
栅栏密码并非一种强的加密法,其加密原理限制了密钥的最高数量不可能超过明文字母数,而实际加密时密钥数目更少,因此有些密码分析员甚至能用手直接解出明文。
栅栏密码分类¶
栅栏密码可以分为两类,第一种是N型栅栏密码(加密方式源自百度百科)、第二种是V型栅栏密码(加密方式源自维基百科)。
N型栅栏密码¶
使用密钥8(栅栏的栏数)加密一下明文1234567891234567891234567891234567891
1.......9.......8.......7.......6.......5..............................
.2.......1.......9.......8.......7.......6.............................
..3.......2.......1.......9.......8.......7............................
...4.......3.......2.......1.......9.......8...........................
....5.......4.......3.......2.......1.......9..........................
.....6.......5.......4.......3.......2.......1.........................
......7.......6.......5.......4.......3................................
.......8.......7.......6.......5.......4...............................
首先画出8栏表格,明文由上至下顺序写上,当到达最低部时,再回到第一栏重新开始,一直重复直至整篇明文写完为止。
横向读取表格即为密文:1987652198763219874321985432196543217654387654。
V型栅栏密码¶
使用密钥8(栅栏的栏数)加密一下明文WillinvadeKentuckyonOctobertheeighth#signalisFrozenchicken'#
W.............n.............b.............#.............r.............#
.i...........e.t...........o.e...........h............F.o...........'.
..l.........K...u.........t...r.........t...s.........'...z.........n..
...l............c.......c............h.....i............e.......e...
.........e.......k.....O.......t.....g.......g.....s.......n.....k....
.....i...d.........y............h...i.........n...i............c.....
......n.a............n...........e.e...........a............c.i......
.......v.............o..........................l.............h.......
在V型栅栏密码中,明文由上至下顺序写上,当到达最低部时,再回头向上,一直重复直至整篇明文写完为止。
横向读取表格即为密文:Wnb#r#ietoehFo'lkutrts'znlcchieeekOtggsnkidyhinicnaneeacivolh。
栅栏密码的程序实现¶
提示
请将该文件存储为railfence.py,后文引用均指该文件
###
###Runninginpython3
###FileName:railfence.py
###Date:2018-08-07
###Time:12:33GMT
###Author:nianhua
###
frommathimport*
classRailfence:
defNencipher(self,plaintext,key):
ciphertext=''
forjinrange(key):
foriinrange(len(plaintext)//key+1):
try:
ciphertext+=plaintext[i*key+j:i*key+j+1]
except:
pass
returnciphertext
defNdecipher(self,ciphertext,key):
plaintext=[]
plainstr=''
column=len(ciphertext)//key
remainder=len(ciphertext)%key
foriinrange(key):
ifi
从上面的前提我们可以知道栅栏密码的密钥空间较小,因此可以使用暴力破解的方式进行攻击。
首先我们编写两种栅栏密码的加密解密代码。
对V型加密后的密文Wnb.r.ietoehFo"lKutrts"znlcchieeekOtggsnkidyhinicnaneeacivolh进行暴力破解
fromrailfenceimport*
newobj=Railfence()
string='Wnb.r.ietoehFo"lKutrts"znlcchieeekOtggsnkidyhinicnaneeacivolh'
foriinrange(2,10):
print(i,newobj.Vdecipher(string,i))
运行程序,查看效果:
我们可以看到第八行是明显是有意义的明文,因此密钥为8
问题
如果密文由100位字母组成,那我们至少需要尝试50个密钥?
栅栏密码小结¶
结论
栅栏密码是一个非常容易破解的密码,密码分析者只需要尝试几个密钥即可找到正确的明文。
如果您知道某些明文,或者可以猜出一些明文,那么将更容易找到密钥。
换位密码的一个特点是字符的频率分布与自然文本的频率分布相同(因为没有进行替换,它只是混合的顺序)。
换句话说,它应该看起来像这样:
延伸文章資訊
- 1栅栏密码_栅栏密码在线加密解密【W型】 - ME2在线工具
栅栏密码W型加密算法: 栅栏密码(Rail fence Cipher),扩展变种W型,采用先把明文类似"W"形状进行排列,然后再按栏目顺序1-N,取每一栏的所有字符值,组成 ...
- 2基本解碼方法介紹——柵欄 - 每日頭條
柵欄加密是凱撒移位的一種變體,它的加密方式是這樣,首先我們得有一串明文,我就瞎編一個:w. wsd32agent563kz. 我們現在想給它加密,這串密碼有15位,拆 ...
- 3栅栏密码加密/解密【W型】 - 一个工具箱
栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把 ...
- 4柵欄密碼_百度百科
所謂柵欄密碼,就是把要加密的明文分成N個一組,然後把每組的第1個字連起來,形成一段無規律的話。 不過柵欄密碼本身有一個潛規則,就是組成柵欄的字母一般不會太多。
- 5柵欄密碼 - 華人百科
所謂柵欄密碼,就是把要加密的明文分成N個一組,然後把每組的第i個字連起來,形成一段無規律的話。 一般比較常見的是2欄的棚欄密碼。 ... 這樣就得到我們需要的密碼了!