查看: 6051|回复: 8

[密码学习] 几种常见的密码加密方式

简洁模式
发表于 2008-10-10 15:48:21 | 显示全部楼层
【凯撒密码(Caesar Shifts, Simple Shift)】  
  也称凯撒移位,是最简单的加密方法之一,相传是古罗马恺撒大帝用来保护重要军情的加密系统,它是一种替代密码。  
  加密公式:密文 = (明文 + 位移数) Mod 26  
  解密公式:明文 = (密文 - 位移数) Mod 26  
  以《数字城堡》中的一组密码为例:  
  HL FKZC VD LDS  
  只需把每个字母都按字母表中的顺序依次后移一个字母即可——A变成B,B就成了C,依此类推。因此明文为:  
  IM GLAD WE MET  
  英文字母的移位以移25位为一个循环,移26位等于没有移位。所以可以用穷举法列出所有可能的组合。  
  例如:phhw ph diwhu wkh wrjd sduwb  
  利用电脑可以方便地列出所有组合,然后从中选出有意义的话:  
  qiix qi ejxiv xli xske tevxc  
  rjjy rj fkyjw ymj ytlf ufwyd  
  skkz sk glzkx znk zumg vgxze  
  tlla tl hmaly aol avnh whyaf  
  ummb um inbmz bpm bwoi xizbg  
  vnnc vn jocna cqn cxpj yjach  
  wood wo kpdob dro dyqk zkbdi  
  xppe xp lqepc esp ezrl alcej  
  yqqf yq mrfqd ftq fasm bmdfk  
  zrrg zr nsgre gur gbtn cnegl  
  assh as othsf hvs hcuo dofhm  
  btti bt puitg iwt idvp epgin  
  cuuj cu qvjuh jxu jewq fqhjo  
  dvvk dv rwkvi kyv kfxr grikp  
  ewwl ew sxlwj lzw lgys hsjlq  
  fxxm fx tymxk max mhzt itkmr  
  gyyn gy uznyl nby niau julns  
  hzzo hz vaozm ocz ojbv kvmot  
  iaap ia wbpan pda pkcw lwnpu  
  jbbq jb xcqbo qeb qldx mxoqv  
  kccr kc ydrcp rfc rmey nyprw  
  ldds ld zesdq sgd snfz ozqsx  
  meet me after the toga party <-  
  nffu nf bgufs uif uphb qbsuz  
  oggv og chvgt vjg vqic rctva  
  可知明文为:meet me after the toga party
本主题帖为【历史主题】,仅楼主发布内容可以浏览。
| 楼主| 发表于 2008-10-10 15:48:51 | 显示全部楼层
[四方密码]
四方密码用4个5×5的矩阵来加密。每个矩阵都有25个字母(通常会取消Q或将I,J视作同一样,或改进为6×6的矩阵,加入10个数字)。  
首先选择两个英文字作密匙,例如example和keyword。对于每一个密匙,将重复出现的字母去除,即example要转成exampl,然后将每个字母顺序放入矩阵,再将余下的字母顺序放入矩阵,便得出加密矩阵。  
将这两个加密矩阵放在左上角和右下角,余下的两个角放a到z顺序的矩阵:
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
加密的步骤:  
两个字母一组地分开讯息:(例如hello world变成he ll ow or ld)  
找出第一个字母在左上角矩阵的位置  
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
同样道理,找第二个字母在右下角矩阵的位置:  
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
找右上角矩阵中,和第一个字母同行,第二个字母同列的字母:  
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z

找左下角矩阵中,和第一个字母同列,第二个字母同行的字母:  
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
这两个字母就是加密过的讯息。  
hello world的加密结果:  
he lp me ob iw an ke no bi
FY GM KY HO BX MF KK KI MD


二方密码
二方密码(en:Two-square_cipher)比四方密码用更少的矩阵。  
得出加密矩阵的方法和四方密码一样。  
例如用「example」和「keyword」作密匙,加密lp。首先找出第一个字母(L)在上方矩阵的位置,再找出第二个字母(D)在下方矩阵的位置:  
E X A M P
L B C D F
G H I J K
N O R S T
U V W Y Z
K E Y W O
R D A B C
F G H I J
L M N P S
T U V X Z
在上方矩阵找第一个字母同行,第二个字母同列的字母;在下方矩阵找第一个字母同列,第二个字母同行的字母,那两个字母就是加密的结果:  
E X A M P
L B C D F
G H I J K
N O R S T
U V W Y Z
K E Y W O
R D A B C
F G H I J
L M N P S
T U V X Z
help me的加密结果:  
he lp me
HE DL XW
| 楼主| 发表于 2008-10-10 15:50:00 | 显示全部楼层
。波雷费密码  
1选取一个英文字作密匙。除去重复出现的字母。将密匙的字母逐个逐个加入5×5的矩阵内,剩下的空间将未加入的英文字母依a-z的顺序加入。(将Q去除,或将I和J视作同一字。)  
2将要加密的讯息分成两个一组。若组内的字母相同,将X(或Q)加到该组的第一个字母后,重新分组。若剩下一个字,也加入X字。  
3在每组中,找出两个字母在矩阵中的地方。  
若两个字母不同行也不同列,在矩阵中找出另外两个字母,使这四个字母成为一个长方形的四个角。  
若两个字母同行,取这两个字母右方的字母(若字母在最右方则取最左方的字母)。  
若两个字母同列,取这两个字母下方的字母(若字母在最下方则取最上方的字母)。  
新找到的两个字母就是原本的两个字母加密的结果。
尚未登录
您需要登录后才可以回帖 登录 | 加入学院