• 古典密码


    1949年香农发表《保密系统的通信原理》,将古典密码推向现代密码。古典密码主要是代换密码(substitution)和置换(permutation)密码。

    一、置换密码

    仅改变明文中元素的位置,但元素本身的值并不会改变。

    1、列置换

    将明文按二维数组排列,根据密钥进行列置换。

    2、周期置换

    将明文按密钥长度为周期进行分组,对每组中元素逐一置换。

    二、代换密码

    改变元素的值,根据映射关系分为单表和多表。

    1、单表代换密码 (明文密文双射)

    a.基于密钥的单表代换密码

      两字母表一一对应。

      e.g.  取一单词为密钥,取其无重复序列,对应字母表中前几位,其余字母依次填写剩余字母表。

    b.仿射密码

      线性变换,y = a * x + b (mod 26), gcd(a,26) = 1。 当a=1,b=3时,即为凯撒密码。

    2、多表代换密码 (明文中不同位置的相同字符会代换成不同字符)

    a. Playfair密码

       先构造一个5*5的字母矩阵,将明文两两一组进行代换,根据组合不同从矩阵得到的代换也各不相同。

    b. Vigenere密码

       密钥为一串字符,将明文按密钥长度分组,对每组与密钥进行数字求和取模运算,因此尽管明文中字符相同,但其字符若对应密钥中不同位置,得到的密文也不同。

    c. Hill密码

      同样进行数字取模运算,将明文分组,与n*n矩阵运算。

    单表代换后,明文与密文各个字符的出现频率相同,而多表则不同。

  • 相关阅读:
    6、UITableView表的分割线左对齐
    5、清理mac缓存和关闭后台运行程序
    1、iOS9 HTTP 不能正常使用的解决办法
    在ios下提示“@synthesize of ‘weak’ property is only allowed in ARC or GC mode”
    java中的String类
    java思考题
    java思考
    java动手动脑思考
    大道至简第二章读后感
    JAVA训练参数求和
  • 原文地址:https://www.cnblogs.com/faded828x/p/14542279.html
Copyright © 2020-2023  润新知