• 古典密码-单表密码体制


    如果明文中不同的位置的同一明文字母在密文中对应的密文字母相同,则称其为单表密码体制。

    代表性的单表密码:

    1.移位或加法密码

    2.乘数或乘法密码

    3.仿射密码

    4.密钥短语密码

    下面分别举一个例子:

    1.加法密码算法:

    P=C=K=Zm   (Zm∈{0,1,...,m-1})

    Ek(x)=x+k(mod m)=y∈C

    Dk(y)=y-k(mod m)=x∈P

    当k=3时,该密码算法就是凯撒密码。

    E3(1)=1+3(mod 26)=4   1代表A,4代表D,所以就把明文A加密成D

    D3(4)=4-3(mod 26)=1  所以把密文D,解密成明文A

    这种算法容易受到唯密文攻击,由算法可知,密钥的可能性个数为m,如果是英语字母表,只有26个字母,那么只要尝试25种(不包括0,因为m=0就等于是明文了)密钥,就能破解该算法。

    2.乘法密码算法

    P=C=Zm

    K={a ∈Zm | (a, m)=1}

    Ea(x)=ax (mod m) =y ∈C

    Da (y)=a-1y (mod m) =x ∈P

    (a-1是a对于m的乘法逆元)

    当m=26,

    P=C=Z26

    K={a ∈Z26 | (a, 26)=1},

    Ea(x)=ax (mod 26) =y ∈C

    Da (y)=a-1y (mod 26) =x ∈P

    (a-1是a对于26的乘法逆元)

    当a=9时,

    逆元a-1=3

    E9(x)=9x (mod 26)=y ∈C

    D9(y)=3y (mod 26)=x ∈P

    加密过程:字符B,对应的X=1 y=E9(x)=9*1 (mod 26)=9 替换为字符J

    解密过程:字符J,对应y=9 x=D9(x)=9*3 (mod 26)=1 还原为字符B

    对于乘数密码,当且仅当a与26互素时,加密变换才是一对一映射的。

    因此a的选择只有11种:3,5,7,9,11,15,17,19,21,23,25,可能的密钥只有11种!

    3.仿射密码算法:

    P=C=Zm

    K={(a,b)∈Zm×Zm|(a,m)=1}

    E(a,b) (x)=ax + b (mod m)

    D(a,b) (y)=a-1(y-b)(mod m)

    当a=1时,变为加法密码

    当b=0时,变为乘法密码

    所以,加法密码和乘法密码是仿射密码的特例。

    设(a,b)=(7,3)

    7-1=15

    若加密明文:hot,首先转换字母h,o,t成为数字7,14,19

    4.密钥短语密码算法:

    一种以单词为密钥的换字表

    ATMOSPHERE为密钥

    去掉重复的字母E

    ATMOSPHER

    放在字母表的某个位置

    KLNQUVWXYZATMOSPHERBCDFGIJ

    ABCDEFGHIJKLMNOPQRSTUVWXYZ原来字母表

    如果明文为APPLE,那么密文为KQQBS

    如果明文字母与代替的密文字母毫无关联,那么整个换字表就是密钥,这时密钥空间为26!,用穷举法来破译几乎是不可能的。

  • 相关阅读:
    node.js 入门笔记3
    Linux常用命令大全(非常全!!!)
    数据库导入导出命令(结构+数据)?
    列举 创建索引但是无法命中索引的8种情况。
    简述触发器、函数、视图、存储过程?
    什么是事务?MySQL如何支持事务?
    简述数据库三大范式
    MySQL常见数据库引擎及比较?
    列举常见的关系型数据库和非关系型都有那些?
    操作系统常见面试题
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5507104.html
Copyright © 2020-2023  润新知