灰灰的密码学笔记.docx
- 文档编号:14297339
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:29
- 大小:34.64KB
灰灰的密码学笔记.docx
《灰灰的密码学笔记.docx》由会员分享,可在线阅读,更多相关《灰灰的密码学笔记.docx(29页珍藏版)》请在冰点文库上搜索。
灰灰的密码学笔记
时间过的也真快,转眼我在密码吧已经混了一个月了,在此期间学到了不少东西,感谢各位高手的无私奉献。
不过也看到了很多不愉快的帖子,密码吧现在没有吧主,请大家多包容一点,不要老是吵架、制造垃圾帖子造成看贴不方便。
不多说了,我花了一个星期的时间把最近学到密码学知识整理成比较条理的笔记,现在拿出来与大家共享,愿能给密码的初学者带来方便,也欢迎高手来补充和指正。
另外我也把各种加密方法编写了网页程序的演示——密码机器 v1.0,现在正在调试中,先放张截图,过几天发上来,希望能够得到大家的支持哦,谢谢。
2楼
目录:
密码常识
字母表顺序-数字
进制转换密码
Mod算法
倒序
间隔
字母频率
凯撒密码(CaesarShifts,SimpleShift)
凯撒移位(中文版)
栅栏密码(TheRail-FenceCipher)
维吉尼亚密码(VigenèreCipher)
Polybius密码(PolybiusCipher)
ADFGX/ADFGVX密码(ADFGX/ADFGVXCipher)
ADFGX
ADFGVX
乘法密码(MultiplicationCipher)
仿射密码(AffineShift)
希尔密码(HillCipher)
加密
解密
Playfair密码(PlayfairCipher)
摩斯电码
置换密码(TranspositionCipher)
替代密码(MonoalphabeticSubstitution)
字母表数字
字母表代码
反字母表
随机乱序字母
棋盘密码
键盘密码
键盘移位
软键盘密码
数字小键盘密码
手机键盘密码
数字谐音密码
数字记忆编码
XX/Google/网页字符
XX字符(GB2312)
Google字符(URI)
网页编码(Unicode)
Alt+数字小键盘
MD5
2007-6-1010:
36回复
秋雨灰灰
150位粉丝
3楼
【密码常识】
字母表顺序-数字
加密的时候,经常要把A~Z这26个字母转换成数字,最常见的一种方法就是取字母表中的数字序号。
A代表1,B代表2,C代表3...
字母ABCDEFGHIJKLMNOPQRSTUVWXYZ
数字1234567891011121314151617181920212223242526
进制转换密码
例如二进制:
1110101011101101011001011111110101
转为十进制:
142113251815145
对应字母表:
number
Mod算法
我们可以对字母序号进行数学运算,然后把所得的结果作为密文。
当运算结果大于26或小于1的时候,我们希望把这个数值转为1~26的范围,那么取这个数除以26的余数即可。
Mod就是求余数的运算符,有时也用“%”表示。
例如29Mod26=3,或写成29%26=3,意思是29除以26的余数是3。
倒序
加密时为经常要对字符进行倒序处理。
如果让你按abcdef...的顺序背出字母表的每个字母会很容易,但是如果是zyxwvu...的顺序那就很难背出来了。
一个很熟悉的单词,如果按相反的顺序拼写,可能就会感到很陌生。
例如“love”字母倒过来拼就是“evol”。
具体加密时倒序有很多种方案,需要灵活运用。
例如:
每个单词的倒序:
sihtsiatset-thisisatest
整句的倒序:
tsetasisiht-thisisatest
数字的倒序:
02509102-20051920(test)
间隔
单词之间的间隔一般使用空格。
在加密时常常要去掉空格,但有时某些字母或数字来替代空格也不失为一种好的加密方案。
错误空格位置也会起到很强的误导作用。
例如:
thisisatest-thisisatest
字母频率
频率分析法可以有效的破解单字母替换密码。
关于词频问题的密码,我在这里提供英文字母的出现频率给大家,其中数字全部是出现的百分比:
a8.2b1.5c2.8d4.3
e12.7f2.2g2.0h6.1
i7.0j0.2k0.8l4.0
m2.4n6.7o7.5p1.9
q0.1r6.0s6.3t9.1
u2.8v1.0w2.4x0.2
y2.0z0.1
词频法其实就是计算各个字母在文章中的出现频率,然后大概猜测出明码表,最后验证自己的推算是否正确。
这种方法由于要统计字母出现频率,需要花费时间较长。
参考《跳舞的小人》和《金甲虫》。
2007-6-1010:
37回复
秋雨灰灰
150位粉丝
4楼
【凯撒密码(CaesarShifts,SimpleShift)】
也称凯撒移位,是最简单的加密方法之一,相传是古罗马恺撒大帝用来保护重要军情的加密系统,它是一种替代密码。
加密公式:
密文=(明文+位移数)Mod26
解密公式:
明文=(密文-位移数)Mod26
以《数字城堡》中的一组密码为例:
HLFKZCVDLDS
只需把每个字母都按字母表中的顺序依次后移一个字母即可——A变成B,B就成了C,依此类推。
因此明文为:
IMGLADWEMET
英文字母的移位以移25位为一个循环,移26位等于没有移位。
所以可以用穷举法列出所有可能的组合。
例如:
phhwphdiwhuwkhwrjdsduwb
利用电脑可以方便地列出所有组合,然后从中选出有意义的话:
qiixqiejxivxlixsketevxc
rjjyrjfkyjwymjytlfufwyd
skkzskglzkxznkzumgvgxze
tllatlhmalyaolavnhwhyaf
ummbuminbmzbpmbwoixizbg
vnncvnjocnacqncxpjyjach
woodwokpdobdrodyqkzkbdi
xppexplqepcespezrlalcej
yqqfyqmrfqdftqfasmbmdfk
zrrgzrnsgregurgbtncnegl
asshasothsfhvshcuodofhm
bttibtpuitgiwtidvpepgin
cuujcuqvjuhjxujewqfqhjo
dvvkdvrwkvikyvkfxrgrikp
ewwlewsxlwjlzwlgyshsjlq
fxxmfxtymxkmaxmhztitkmr
gyyngyuznylnbyniaujulns
hzzohzvaozmoczojbvkvmot
iaapiawbpanpdapkcwlwnpu
jbbqjbxcqboqebqldxmxoqv
kccrkcydrcprfcrmeynyprw
lddsldzesdqsgdsnfzozqsx
meetmeafterthetogaparty<-
nffunfbgufsuifuphbqbsuz
oggvogchvgtvjgvqicrctva
可知明文为:
meetmeafterthetogaparty
-------------------------------------------------------------------------
【凯撒移位(中文版)】
就是按照中文字在Unicode编码表中的顺序进行移位,可以用来加密中文的信息。
例:
[中文凯撒移位]
转换成Unicode编码:
中文凯撒移位
移1位后成为:
丮斈凰撓秼低
转换成中文:
[丮斈凰挠秼低]
【栅栏密码(TheRail-FenceCipher)】
也称栅栏易位(ColumnarTransposition),即把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。
栅栏密码是一种置换密码。
例如密文:
TEOGSDYUTAENNHLNETAMSHVAED
解密过程:
先将密文分为两行
TEOGSDYUTAENN
HLNETAMSHVAED
再按上下上下的顺序组合成一句话
THELONGESTDAYMUSTHAVEANEND.
.............................................................
加密时不一定非用两栏,还是举《数字城堡》中的一个例子,密文为:
PFEESESNRETMMFHAIRWEOOIGMEENNRMAENETSHASDCNSIIAAIEERBRNKFBLELODI
去掉空格:
PFEESESNRETMMFHAIRWEOOIGMEENNRMAENETSHASDCNSIIAAIEERBRNKFBLELODI
共64个字符,以8个字符为一栏,排列成8*8的方阵(凯撒方阵):
PFEESESN
RETMMFHA
IRWEOOIG
MEENNRMA
ENETSHAS
DCNSIIAA
IEERBRNK
FBLELODI
从上向下竖着读:
PRIMEDIFFERENCEBETWEENELEMENTSRESMONSIBLEFORHIROSHIMAANDNAGASAKI
插入空格:
PRIMEDIFFERENCEBETWEENELEMENTSRESMONSIBLEFORHIROSHIMAANDNAGASAKI(广岛和长崎的原子弹轰炸的最主要区别)
.............................................................
栅栏密码也可以用于中文,不过比较容易破解。
明文:
这是中文的栅栏密码
密文(3*3方阵):
这文栏是的密中栅码
由于中文用规则的栅栏比较容易破解,所以产生了一些变体,例如道家心法密籍《天仙金丹心法》中的一段加密方法。
密文如下:
○茫天:
摹然月终为鼎半是真灭器轮假不但伸净著定分泥万○无○光人经法一从尘色返我权自法中妙大空照生屈来好路形神海○便还未归
○茫
天:
摹
然月终为
鼎半是真灭
器轮假不但伸
净著定分泥万○
无○光人经法一从
尘色返我权自法中妙
大空照生屈来好路形神
海○便还未归
明文(从上向下竖着读):
天然鼎器净无尘,大海茫茫月半轮。
著色空摹终是假,定光返照便为真。
不分人我生还灭,但泥经权屈未伸。
万法自来归一法,好从中路妙形神。
.............................................................
利用电脑进行加密或解密,建议使用“列举加密”或“列举解密”,电脑会自动尝试一些正好匹配的栏位进行列举。
lyiroonevuclesey
4栏:
loveyousincerely
8栏:
lionvceeyroeulsy
【维吉尼亚密码(VigenèreCipher)】
由于频率分析法可以有效的破解单表替换密码,法国密码学家维吉尼亚于1586年提出一种多表替换密码,即维吉尼亚密码,也称维热纳尔密码。
维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。
加密算法:
例如密钥的字母为[d],明文对应的字母[b]。
根据字母表的顺序[d]=4,[b]=2,那么密文就是[d]+[b]-1=4+2-1=5=[e],因此加密的结果为[e]。
解密即做此逆运算。
加密公式:
密文=(明文+密钥)Mod26-1
解密公式:
明文=[26+(密文-密钥)]Mod26+1
也可以用查表法来进行加密:
例如密钥的字母为[d],明文对应的字母[b],在下图的表格第一行找到字母"d"(深蓝色),再在左边第一列找到字母"b"(绿色),两个字母的交叉点(b行d列)就是字母"E",所以对应的密文字母为[e]。
[-----------------图-----------------]
abcdefghijklmnopqrstuvwxyz
aABCDEFGHIJKLMNOPQRSTUVWXYZ
bBCDEFGHIJKLMNOPQRSTUVWXYZA
cCDEFGHIJKLMNOPQRSTUVWXYZAB
dDEFGHIJKLMNOPQRSTUVWXYZABC
eEFGHIJKLMNOPQRSTUVWXYZABCD
fFGHIJKLMNOPQRSTUVWXYZABCDE
gGHIJKLMNOPQRSTUVWXYZABCDEF
hHIJKLMNOPQRSTUVWXYZABCDEFG
iIJKLMNOPQRSTUVWXYZABCDEFGH
jJKLMNOPQRSTUVWXYZABCDEFGHI
kKLMNOPQRSTUVWXYZABCDEFGHIJ
lLMNOPQRSTUVWXYZABCDEFGHIJK
mMNOPQRSTUVWXYZABCDEFGHIJKL
nNOPQRSTUVWXYZABCDEFGHIJKLM
oOPQRSTUVWXYZABCDEFGHIJKLMN
pPQRSTUVWXYZABCDEFGHIJKLMNO
qQRSTUVWXYZABCDEFGHIJKLMNOP
rRSTUVWXYZABCDEFGHIJKLMNOPQ
sSTUVWXYZABCDEFGHIJKLMNOPQR
tTUVWXYZABCDEFGHIJKLMNOPQRS
uUVWXYZABCDEFGHIJKLMNOPQRST
vVWXYZABCDEFGHIJKLMNOPQRSTU
wWXYZABCDEFGHIJKLMNOPQRSTUV
xXYZABCDEFGHIJKLMNOPQRSTUVW
yYZABCDEFGHIJKLMNOPQRSTUVWX
zZABCDEFGHIJKLMNOPQRSTUVWXY
假如对如下明文加密:
tobeornottobethatisthequestion
当选定“have”作为密钥时,加密过程是:
密钥第一个字母为[h],明文第一个为[t],因此可以找到在h行t列中的字母[a],依此类推,得出对应关系如下:
密钥:
havehavehavehavehavehavehaveha
明文:
tobeornottobethatisthequestion
密文:
aowivrisatjfltceainxoelylsomvn
【Polybius密码(PolybiusCipher)】
也称棋盘密码,是利用波利比奥斯方阵(PolybiusSquare)进行加密的密码方式,产生于公元前两世纪的希腊,相传是世界上最早的一种密码。
假设我们需要发送明文讯息“Attackatonce”,用一套秘密混杂的字母表填满波利比奥斯方阵,像是这样:
ADFGX
Abtalp
Ddhozk
Fqfvsn
Ggjcux
Xmrewy
i和j视为同一个字,使字母数量符合5×5格。
之所以选择这五个字母,是因为它们译成摩斯密码时不容易混淆,可以降低传输错误的机率。
使用这个方格,找出明文字母在这个方格的位置,再以那个字母所在的栏名称和列名称代替这个字母。
可将该讯息转换成处理过的分解形式。
明文:
ATTACKATONCE
密文:
AFADADAFGFDXAFADDFFXGFXF
A,D,F,G,X也可以用数字1,2,3,4,5来代替,这样密文就成了:
131212134325131223354353
-------------------------------------------------------------------------
【ADFGX/ADFGVX密码(ADFGX/ADFGVXCipher)】
ADFGX
1918年,第一次世界大战将要结束时,法军截获了一份德军电报,电文中的所有单词都由A、D、F、G、X五个字母拼成,因此被称为ADFGX密码。
ADFGX密码是1918年3月由德军上校FritzNebel发明的,是结合了Polybius密码和置换密码的双重加密方案。
A、D、F、G、X即Polybius方阵中的前5个字母。
明文:
ATTACKATONCE
经过Polybius变换:
AFADADAFGFDXAFADDFFXGFXF
下一步,利用一个移位密钥加密。
假设密钥是“CARGO”,将之写在新格子的第一列。
再将上一阶段的密码文一列一列写进新方格里。
CARGO
_________
AFADA
DAFGF
DXAFA
DDFFX
GFXFX
最后,密钥按照字母表顺序“ACGOR”排序,再按照此顺序依次抄下每个字母下面的整列讯息,形成新密文。
如下:
FAXDFADDDGDGFFFAFAXXAFAFX
在实际应用中,移位密钥通常有两打字符那么长,且分解密钥和移位密钥都是每天更换的。
ADFGVX
在1918年6月,再加入一个字V扩充。
变成以6×6格共36个字符加密。
这使得所有英文字母(不再将I和J视为同一个字)以及数字0到9都可混合使用。
这次增改是因为以原来的加密法发送含有大量数字的简短信息有问题。
【乘法密码(MultiplicationCipher)】
乘法密码也是一种简单的替代密码,与凯撒密码相似,凯撒密码用的是加法,而乘法密码用的自然是乘法。
这种方法形成的加密信息保密性比较低。
加密公式:
密文=(明文*乘数)Mod26
对于乘数密码,只有当乘数与26互质时,加密之后才会有唯一的解,因此乘数只可能有如下11种的选择:
乘数=3,5,7,9,11,15,17,19,21,23,25
仿射密码和希尔密码因为都用到了乘法,所以乘数也受到相同的局限。
-------------------------------------------------------------------------
【仿射密码(AffineShift)】
仿射密码就是凯撒密码和乘法密码的结合。
加密公式:
密文=(明文*乘数+位移数)Mod26
-------------------------------------------------------------------------
【希尔密码(HillCipher)】
希尔密码就是矩阵乘法密码,运用基本矩阵论原理的替换密码。
每个字母当作26进制数字:
A=0,B=1,C=2...一串字母当成n维向量,跟一个n×n的密钥矩阵相乘,再将得出的结果模26。
希尔密码的优点是完全隐藏了字符的频率信息,弱点是容易被已知明文攻击击破。
加密
例如:
密钥矩阵
13
02
明文:
HITHERE
去空格,2个字母一组,根据字母表顺序换成矩阵数值如下,末尾的E为填充字元:
HITHEREE
82055
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 灰灰 密码学 笔记