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

    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矩阵运算。

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

  • 相关阅读:
    Linux内核tracepoints
    Linux 设备驱动的固件加载
    Android HIDL HAL 接口定义语言详解
    Android HIDL 详解
    Android各版本对应的SDK版本
    ifconfig调用过程
    Input系统—启动篇
    Linux下2号进程的kthreadd--Linux进程的管理与调度
    rest_init函数分析(续)
    【python】-常用模块2
  • 原文地址:https://www.cnblogs.com/faded828x/p/14542279.html
Copyright © 2011-2022 走看看