zoukankan      html  css  js  c++  java
  • 古典密码

      古典密码的加密是将明文的每一字母代换为字母表中的另一个字母,代换前者首先将明文字母用等价的十进制数字代替,再以代替后的十进制数字进行运算。根据代换是对每个字母逐个进行还是对多个字母同时进行,古典密码又分为单表代换密码和多表代换密码。

    单表代换密码

      1.凯撒密码:

            加密    c  =  E3(m)  ≡ m +3(mod 26),  0 ≤ m ≤ 25

            解密    m = D3(c) ≡ c - 3(mod 26),  0 ≤ m ≤ 25

      其中,3是加解密所用到的密钥,加密时,每个字母向后移3位(循环移位,字母x移到a,y移到b,z移到c)。解密时,每个字母向前移3位(循环移位)。

       2.移位变换

          移位变换的加解密分别是

                  c =  E3(m)  ≡ m +k(mod 26),  0 ≤ m,k ≤ 25

                  m = D3(c) ≡ c - k(mod 26),  0 ≤ m,k ≤ 25

      3.仿射变换

          仿射变换的加密解密分别是

                  c = Ea,b(m) ≡ am + b(mod 26)

                  m = Da,b(c) ≡ a-1(c-b)(mod 26)

       其中a,b是密钥,为满足0 ≤ a, b ≤ 25 和 gcd(a,26) = 1的整数。其中gcd(a,26)表示a和26的最大公因子,gcd(a,26) = 1表示a和26是互素的,a-1表示a的逆元,即a-1·a ≡ 1 mod 26

    多表代换密码

       多表代换密码首先将明文M分为由n个字母构成的分组M1,M2,..., M, 对每个分组M的加密为 Ci ≡ AMi + B(mod N), i = 1,2,...j  其中,(A,B)是密钥,A是n×n 的可逆矩阵,满足gcd(|A| , N) = 1(|A| 是行列式)。B = (B1,B2,....Bn)T,C = (C1,C2,....Cn)T,Mi = (m1,m2,....mn)T。对密文分组C的解密为 Mi ≡ A-1(Ci  - B ) (mod N), i = 1,2,...j

  • 相关阅读:
    line-height 行高
    CSS菜单横竖布局要点
    鬼吹灯之精绝古城迅雷下载
    sublime less高亮插件
    Swiper说明&&API手册
    jQuery的deferred对象详解
    js中typeof与instanceof的不同用法
    js中apply方法的使用
    Javascript获取当前时间戳的方法
    json对象和json字符串转换方法
  • 原文地址:https://www.cnblogs.com/zhangzimu/p/8568515.html
Copyright © 2011-2022 走看看