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

  • 相关阅读:
    net core 使用 rabbitmq
    asp.net core WebApi 返回 HttpResponseMessage
    asp.net core 2.1 WebApi 快速入门
    JQuery EasyUI combobox动态添加option
    php截取字符去掉最后一个字符
    JQuery EasyUI Combobox的onChange事件
    对于不返回任何键列信息的 selectcommand 不支持 updatecommand 的动态 sql 生成
    Access2007 操作或事件已被禁用模式阻止解决办法
    Easyui 中 Tabsr的常用方法
    Win 7 IE11不能下载文件,右键另存为也不行
  • 原文地址:https://www.cnblogs.com/zhangzimu/p/8568515.html
Copyright © 2011-2022 走看看