栅栏密码- crypto-wiki - 密码学简介

文章推薦指數: 80 %
投票人數:10人

所谓栅栏密码,就是将要加密的明文分为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): ifimaxlen): maxlen=len(i) foriinrange(ceil(maxlen/2)): forjinrange(len(cipherarray)): plaintext+=cipherarray[j][:1] cipherarray[j]=cipherarray[j][1:] forjinrange(len(cipherarray)-2,0,-1): plaintext+=cipherarray[j][:1] cipherarray[j]=cipherarray[j][1:] returnplaintext defmain(): newobj=Railfence() print(newobj.Vdecipher(newobj.Vencipher('WillinvadeKentuckyonOctobertheeighth.signalis"Frozenchicken"',8),8)) if"__main__"==__name__: main() 栅栏密码的破解¶ 前提 栅栏密码的密钥空间必定小于密文长度的½(因为如果密钥大于密文长度的½,则结束部分的明文未被加密)。

从上面的前提我们可以知道栅栏密码的密钥空间较小,因此可以使用暴力破解的方式进行攻击。

首先我们编写两种栅栏密码的加密解密代码。

对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个密钥? 栅栏密码小结¶ 结论 栅栏密码是一个非常容易破解的密码,密码分析者只需要尝试几个密钥即可找到正确的明文。

如果您知道某些明文,或者可以猜出一些明文,那么将更容易找到密钥。

换位密码的一个特点是字符的频率分布与自然文本的频率分布相同(因为没有进行替换,它只是混合的顺序)。

换句话说,它应该看起来像这样:



請為這篇文章評分?