加密——加密①

0 阅读5分钟

密码术——一种伪装信息,唯有指定的收信人才能读出原意的技术,为了应对敌人拦截机密而不断发展,最终成了编码者和译码者之间的战争,却深深的影响着历史走向......

起初的加密很简单直接,却都因为被破译而一直在不断演变,到如今的超级计算机都要计算百年,它们都在背后默默的守护着信息的安全......而今天,我们从最开始的密码说起:

##① 隐藏\隐匿法。

据希罗多德的《历史》记载,在公元前5世纪,希腊和波斯之间开战之前,住在波斯的一位叫狄马拉图斯的希腊人发现了波斯军队集结,将这个信息写在了一块对折的木板上,涂上蜡烛盖住了信息,顺利的将信息送到了希腊,希腊做好了准备,最终赢得了这场战争(隐藏法)。

还有一个很经典的故事,一位名叫希斯泰尤斯为了传送信息,将自己的头发剃光,将信息写在了头皮上,等头发长出来后,再去传信,到达后剃掉头发就可查阅信息,就是速度不敢恭维,好在那会没有如今的快节奏(隐匿法)。

但是这种方式过于简单,被发现后信息就回曝光,为了安全期间,就衍生出了“密码法”。

##② 密码法

密码法注重的是隐藏信息的含义,不再是隐藏信息本身,隐藏信息含义的过程称为“加密”(Encryption)。

密码法分有两类:1. 位移法(transposition) 2. 替代法(substitution)

#####1. 位移法:字母的内涵不变,改变的位置。 举个例子:3个字母,比如com共有几种排列方式?可以使用阶乘3! = 3 * 2 * 1 = 6; 下面列出来:com ,cmo ,ocm,ocm,moc,moc。

如果有10个字母呢? 一句只有10个字母的话就有3628800中组个方式。 但是随机排列组个也是在知道回文谜,别人是无法解读,就是收到的人甚至也无法解读。

为了移位后能够被有效解读,所以开始就有了 篱笆密码法:分为两排篱笆法或三排篱笆法,就是将明文信息岔开成两排或三排,然后将岔开的文字连起来,如下:

IN THE MIDDLE OF EVERY DIFFICULTY LIES OPPORTUNITY

I    T  E  I   D  E   F  V  R  D  F   I  U   T  L   E   O   P   R   U   I   Y
  N   H  M  D    L  O  E  E  Y  I   F  C   L   Y  I   S   P   O   T   N   T

ITEIDEFVRDFIUTLEOPRUIY NHMDLOEEYIFCLYISPOTNT

这就是两排篱笆法加密后的密文,我在中间留了几个空格区分第二排,复原时重新拆分为两排再依次插入对应位置。

还有一种—— 密码棒密码法:在同一个粗细规格的木棒上缠上皮带,然后顺着木棒一行一行书写(非绕着木棒一圈一圈的写),完成后取下皮带,要查看正确信息,缠绕在同规格的木棒上就可以查看,非同规格的木棒无法查看正确信息。 历史上第一件军用密码装置——斯巴达密码棒(公元前5世纪)。


#####2. 替代法:字母的位置不变,改变的是字母的内涵。

例如:

明文为:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

密文为:Z E B R A S Q D F G H I J K L M N O P C T U V W X Y

字母按顺序一一对应。

加密前明文为:flee at once we are discovered;

加密结果为:SIAA ZC LKBA VA ZOA RFPBLUAOAR。

密码学惯例,明文字母集用小写,密码字母集用大写

凯撒密码法也是一种简单的替代法,与上面的类似,明文不变,密文为将明文字母顺序后挪几位。

例如:

明文为:ABCDEFGHIJKLMNOPQRSTUVWXYZ

密文为:XYZABCDEFGHIJKLMNOPQRSTUVW

这样是可以加密内容,但是密文不方便记忆,为了便于记忆,就有了便于记忆的钥匙词或钥匙词组,如选用CAESAR CIPHER,去掉空格和重复字母变成CAESRIPH,再以这些字母做起始字母,如下:

明文为:a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z

密文为:C  A  E  S  R  I  P  H  J  K  L  M  N  O  Q  T  U  V  W  X  Y  Z  B  D  F  G

这个时候,人们只需要记住CAESAR CIPHER这个词组就可以知道对应的密码了。

如例所示,有时会有明文和密文刚好一样,如h和H刚好重叠,这时可以向前或向后顺移几位,下面示例是顺序向右移动了8位:

明文为:a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z

密文为:W  X  Y  Z  B  D  F  G  C  A  E  S  R  I  P  H  J  K  L  M  N  O  Q  T  U  V  

当然,密文也可以为数字,26个字母可以和0-99中的任意26为一一对应,加密时如同上面一样,剩下的的74位则可以随意分布在加密后的密文中,用以扰乱中途截获的破译者,这个被随机分布在密文当中的数字被称为:虚元(Nulls)。

当然,密文也可以为符号,或者添加特定的符号位某个词或词组都可以。

无论加密多难,但是有了秘钥(密文)就可以轻松破译,所以这个时候秘钥的重要性远比算法本身还重要。

替代法的加密就到这里了,那这个要怎么解呢? 下一篇 最初始的加密方式——解密① 详解。