2 Aug 2019

古典密码学从入门到白给

古典密码学从入门到白给

  • 古典密码

    1. 置换密码
    2. 代换密码
  • 置换密码

    明文的字母保持相同,但顺序被打乱

    • 栅栏密码

      栅栏密码把要加密的明文分成 N 个一组,然后把每组的第 1 个字连起来,得到密文

      2栏的栅栏密码
      明文:THERE IS A CIPHER
      去掉空格后变为:THEREISACIPHER
      两个一组,得到:TH ER EI SA CI PH ER
      先取出第一个字母:TEESCPE
      再取出第二个字母:HRIAIHR
      连在一起得到密文:TEESCPEHRIAIHR
      解密时,先把密文从中间分开,变为两行:
      T E E S C P E
      H R I A I H R
      再按上下上下的顺序组合起来:
      THEREISACIPHER
      分出空格,得到明文:
      THERE IS A CIPHER
      
    • 曲路密码

      9

      明文:The quick brown fox jumps over the lazy dog
      

      10

      密文:gesfc inpho dtmwu qoury zejre hbxva lookT
      

      事先约定行列数与曲路路径

    • 列移位加密

      和曲路密码相同,将明文写入事先约定的表格。按密钥在字母表中出现的先后顺序对列编号,按顺序写出整列就是密文

      11

      密文: qoury inpho Tkool hbxva uwmtd cfseg erjez
      
  • 代换密码

    明文的每一个字符被替换成密文中的另一个字符。

    • 单表代换密码

      • 凯撒密码

        明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推

        可以通过穷举法破解

      • ROT

        ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字

        ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母

        ROT18:将ROT5和ROT13组合在一起

        ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符。用于ROT47编码的字符其ASCII值范围是33-126

      • 简单替换密码

        将明文中所使用的字母替换为另一套字母表,形成新的对应关系,这种替换可以是任意的一对一关系

        密钥空间$26!$,很难通过穷举法破解

        每个明文字母被唯一的密文字母替代,可以通过词频分析破解

      • 埃特巴什码

        简单替换密码

        常文: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 Y X W V U T S R Q P O N M L K J I H G F E D C B A
        
      • Polybius密码

          1 2 3 4 5
        1 a b c d e
        2 f g h i k
        3 l m n o p
        4 q r s t u
        5 v w x y z

        加密时在表格中找到明文,然后使用明文所在的行字符和列字符代替,比如明文为a,则密文为11

        解密时在密码表里边找到行列所对应的字符就可以解密,比如密文为11,则明文为a

      • 摩尔斯电码

        字符 电码 字符 电码 字符 电码 字符 电码 字符 电码
        A .- N -. . .-.-.- + .-.-. 1 .- - - -
        B -… O - - - , - -..- - _ ..- -.- 2 ..- - -
        C -.-. P .- -. : - - -… $ …-..- 3 …- -
        D -.. Q - -.- .-..-. & .-… 4 ….-
        E . R .-. .- - - -. / -..-. 5 …..
        F ..-. S ! -.-.- -     6 -….
        G - -. T - ? ..- -..     7 - -…
        H …. U ..- @ .- -.-.     8 - - -..
        I .. V …- - -….-     9 - - - -.
        J .- - - W .- - ; -.-.-.     0 - - - - -
        K -.- X -..- ( -.- -.        
        L .-.. Y -.- - ) -.- -.-        
        M - - Z - -.. = -…-        

        直接查表就好。

      • 猪圈密码

        7

      • 培根密码

        a   AAAAA   g     AABBA   n    ABBAA   t     BAABA
        b   AAAAB   h     AABBB   o    ABBAB   u-v   BAABB
        c   AAABA   i-j   ABAAA   p    ABBBA   w     BABAA
        d   AAABB   k     ABAAB   q    ABBBB   x     BABAB
        e   AABAA   l     ABABA   r    BAAAA   y     BABBA
        f   AABAB   m     ABABB   s    BAAAB   z     BABBB
        

        AB代表A型B型,如不同字体,大小写

      • 希尔密码

        1

      • 仿射密码

        对于大小为m的字母系统

        加密函数:$ e(x) = ax + b\space(mod\space m)$

        解密函数:$ d(x) = a^{-1}(x - b)\space(mod\space m)$

        密钥:$(a,b)$

        a和m互素,b为小于m的正整数。

        $a^{-1}$ 是a在$Z_m$群的乘法逆元,a与m互素蔡存在乘法逆元

        $1 ≡ aa^{-1}\ mod\ m $

        • 乘法逆元

          数学领域群G中任意一个元素a,都在G中有唯一的逆元a‘,具有性质a×a’=a’×a=e,其中e为该群的单位元。

        m = 26,a=1时为凯撒密码,该加密方程可简化为线性移动

        小于26的正整数中有12个数与26互质,共有 12*26 = 312 个放射密码,除去26个凯撒密码还有286个,缺少复杂性

    • 多表代换密码

      • 维吉尼亚密码

        8

        找到明文对应的列和密钥对应的行得到密文

        明文根据密钥长度分组,组内偏移量一致,维吉尼亚密码相当于多个凯撒密码

        密钥长度是破解维吉尼亚密码的关键

      • ADFGVX密码

          A D F G X
        A b t a l p
        D d h o z k
        F q f v s n
        G g j c u x
        X m r e w y

        结合了改良过的Polybius方格替代密码与单行换位密码

        1. i和j视为同一个字符,使字母数量符合5*5

          加密时在表格中找到明文,然后使用明文所在的行字符和列字符代替

          解密时在密码表里边找到行列所对应的字符

          A T T A C K A T O N C E
          AF AD AD AF GF DX AF AD DF FX GF XF

          密文AFADADAFGFDXAFADDFFXGFXF

        2. 利用一个移位钥匙加密。假设密钥是“CARGO”,将之写在新表格第一行。再将上一阶段密文写入。

          C A R G O
          A F A D A
          D A F G F
          D X A F A
          D D F F X
          G F X F X

          按密钥字母顺序「ACGOR」抄下整列,形成新密文

          FAXDF ADDDG DGFFF AFAXX AFAFX


Tags:
0 comments



本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议CC BY-NC-ND 4.0)进行许可。

This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License (CC BY-NC-ND 4.0).