<<  < 2012 - >  >>
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 27 28 29




一:。RSA算法
  RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 
  RSA的算法涉及三个参数,n、e1、e2。 
  其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。 
  e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质(互质:两个正整数只有公约数1时,他们的关系叫互质);再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。 
  (n及e1),(n及e2)就是密钥对。 
  RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n; 
  e1和e2可以互换使用,即: 
  A=B^e2 mod n;B=A^e1 mod n; 

  1.RSA非对称加密的一些非常规应用 http://www.icylife.net/yunshu/show.php?id=471

      2.RSA的解释 http://hi.baidu.com/yhgzi/blog/item/55a6b6641a4a63f5f7365431.html

二:。四方密码

  四方密码用4个5×5的矩阵来加密。每个矩阵都有25个字母(通常会取消Q或将I,J视作同一样,或改进为6×6的矩阵,加入10个数字)。

  首先选择两个英文字作密匙,例如example和keyword。对于每一个密匙,将重复出现的字母去除,即example要转成exampl,然后将每个字母顺序放入矩阵,再将余下的字母顺序放入矩阵,便得出加密矩阵。

  将这两个加密矩阵放在右上角和左下角,余下的两个角放a到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

  help me的加密结果:

  he lp me

  HE DL XW

四: 。维热纳尔方阵

  待加

  著名的维热纳尔方阵由密码学家维热纳尔编制,大体与凯撒加密法类似。即二人相约好一个密钥(单词

  ),然后把加密后内容给对方,之后对方即可按密码表译出明文。

  密钥一般为一个单词,加密时依次按照密钥的每个字母对照明码行加密。

  例如:我的密钥是who,要加密的内容是I love you,则加密后就是E SCRL MKB.即加密I,就从密钥第一个字母打头的w那行找明码行的I对应的字母,即E。加密l,就从密钥第2个字母打头的h那行找明码l对应的字母,S。加密o,从密钥第三个字母O打头的那行找到明码行中o对应的字母,C。加密v,就又从密钥第一个字母w打头的那行找到明码行中v对应的字母,R。 依此类推。

  所以由维热纳尔方阵加密的密码,在没有密钥的情况下给破译带来了不小的困难。

  维热纳尔方阵很完美的避开了概率算法(按每个语种中每个字母出现的概率推算。例如英语中最多的是e),使当时的密码破译师必须重新找到新方法破译。

  。维热纳尔方阵(维吉纳正方形)衍生版本

  衍生版本是将密钥和原文转化为数字,如:密钥为shadow in the sky(没有人说过密钥只能为一个词),原文为Alpha six,please bomb area CA.Over.

  将他们转化为数字便是

  密钥:1908010415230914200805191125

  原文:01121608011909241612050119050215130201180501030115220518

  将密钥连续不断地写在原文上,如下:

  19080104152309142008051911251908010415230914200805191125

  01121608011909241612050119050215130201180501030115220518

  再将上下两行相加(若相加后的数大于10,则忽略十位,在原位写下个位数字),如下:

  密码数:10101702163208383610001020201113140616310415230910311633

  若要读出密码,则将密码数减去密钥(若相减后的数小于0,则先加上10,再相减)即可,如下:

  密码数:10101702163208383610001020201113140616310415230910311633

  密钥:19080104152309142008051911251908010415230914200805191125

  原文:01121608011909241612050119050215130201180501030115220518

  再译成英语即可。

  此方法可以适用任何表音文字(英、俄、日、法语等),而且他不仅传承了维吉纳正方形的所有优点(几乎不被破译,避开概率统计),而且它还有编写容易的特点(你一定不喜欢整天捧着个正方形表来编码吧)

五: 。栅栏加密法

  栅栏加密法是一种比较简单快捷的加密方法。栅栏加密法就是把要被加密的文件按照一上一下的写法写出来,再把第二行的文字排列到第一行的后面。

  相应的,破译方法就是把文字从中间分开,分成2行,然后插入。

  栅栏加密法一般配合其他方法进行加密。

       (完)

发表评论:
天涯博客欢迎您!