对称密码学之传统密码学

对称密码学之传统密码学

1.对称密码学的5个基本成分

  1. 明文 :原始可理解的消息或数据,是算法的输入;

  2. 加密算法: 加密算法对明文进行各种代替或置换;

  3. 密钥: 也是算法的输入,但独立于明文和加密算法,算法根据所用的特定的的密钥可产生不同的输出;

  4. 密文:作为算法的输出,看起来杂乱无章,依赖于明文和密钥;

  5. 解密算法:本质上是加密算法的逆运算,输入密文和密钥,输出明文;

2.传统密码的简化模型

在这里插入图片描述
X:明文
E :加密算法
K :密钥
Y :密文
D :解密算法

3.代替技术

所有加密技术都要用到两个基本模块:代替(替换)和置换。

(1)什么是代替技术

代替技术是将明文字母替换成其他字母、数字或符号的方法。

(2)什么是代替密码,又哪些加密方法是代替密码?

加密方案是采用代替技术而实现的称为代替密码,代替密码包括:Caesar密码(恺撒密码)、单表代替密码、playfair密码(普莱费尔密码)、Hill密码(希尔密码)、多表代替加密、一次一密。

3.1 Caesar密码(恺撒移位)

  1. 定义:字母表中的每个字母用它之后的第3个字母代替。

  2. 例子:字母a用其之后的第三个字母d代替,字母b用其之后的第三个字母e代替,依次类推,如下图:在这里插入图片描述

  3. 算法的公式化表示

    (1)加密算法

    对于每个明文字母p,替换成密文字母C都有:C = E (3,p)=(p+3)mod26,即 密文 = ( 明文 + 3 )mod26

    (2)一般加密算法

    移位k可以是任意整数, k ∈ [1,25] : C = E (k,p)=(p+k)mod26,即 密文 = ( 明文 + 移位数k )mod26

3.2 playfair密码

  1. 定义 :该算法基于一个由密钥词构成的5×5字母矩阵。

  2. 字母矩阵的生成规则:首先将密钥词(去掉重复字母)从左至右、从上至下填在矩阵格子里,再将剩余的字母按字母表的顺序从左到右、从上至下填在矩阵剩下的格子李。字母I和J暂且当成一个字母。

  3. 加密规则

    a. 如果该字母对的两个字母是相同的,那么在它们之间加一个填充字母,比如x。例如: Hello先把它变成he lx lo这样3个字母对。

    b. 落在矩阵同一行的明文字母对中的字母由其右边的字母代替,每行中最右边的一个字母就用该列中最左边的第一个字母来代替,比如ar变成RM。

    c. 落在矩阵同一列的明文字母对中的字母由其下面的字母代替,每行中最下面的一个字母就用该列中最上面的第一个字母来代替,例如mu变成CM。

    d. 其他的每组明文字母对文中的字母则:该字母所在行为密文所在行,另一字母所在列为密文所在列。比如hs变成BP,ea变成IM。

  4. 举例说明
    取” monarchy ”为密钥,得5*5的矩阵如下图所示:
    在这里插入图片描述
    要加密的消息是:Hello world

    进行两两分组 : HE LX LO WO RL DX

    根据加密规则得到密文:FC SU PM ON TM BZ

3.3 Hill密码(希尔密码)

  1. hill密码是通过矩阵理论对传输信息进行加密处理的。

  2. 算法的基本思想(先用一个例子来表示)

    首先设定26个英文字母与数字的对应关系如下图,0表示空格:
    在这里插入图片描述
    要发送的信息是:I Love You

    对照上述字母与数字的关系可得到要发送的信息的编码为:9 , 0 , 12 , 15 , 22 , 5 , 0 , 25 , 15 , 21

    假设将信息中从左到右, 每3 个字符分为一组,并将对应的3 个整数排成3 维的列向量,加密后仍为 3 维的列向量,最后不足3 个字符时用空格补上,可得到4个列向量:p1 = (9,0,12)T , p2 = (15,22,5)T , p3 = (9,25,15)T , p4 = (21,0,0)T ,将这4个列向量写成一个矩阵P,可得到矩阵如下P
    [ 9 15 0 21 0 22 25 0 12 5 15 0 ] (P) \left[ \begin{matrix} 9 & 15 & 0 & 21 \\ 0 & 22 & 25 & 0 \\ 12 & 5 & 15 & 0 \end{matrix} \right] \tag{P} 901215225025152100(P)
    第一步:加密

    任取一个3可逆矩阵K
    [ 1 2 1 2 1 1 0 2 1 ] (K) \left[ \begin{matrix} 1 & 2 & 1 \\ 2 & 1 & 1 \\ 0 & 2 & 1 \end{matrix} \right] \tag{K} 120212111(K)
    是将要发出的信息( 或矩阵P) 经乘以K变成“密 码”后发出,即KP = C,矩阵C为
    [ 21 64 65 21 30 57 40 42 12 49 65 0 ] (C) \left[ \begin{matrix} 21 & 64 & 65 & 21 \\ 30 & 57 & 40 & 42 \\ 12 & 49 & 65 & 0 \end{matrix} \right] \tag{C} 21301264574965406521420(C)
    得到矩阵C后即可得到加密过后的消息是:udllewmnmup,注意矩阵C中有大于26的数字,可用mod26的方式得到加密消息

    第二步:解密

    解密是加密的逆运算,用到可逆矩阵K的逆矩阵K-1 ,K-1为:
    [ 1 0 − 1 2 − 1 − 1 − 4 2 3 ] (K-1) \left[ \begin{matrix} 1 & 0 &-1 \\ 2 & -1 & -1 \\ -4 & 2 & 3 \end{matrix} \right] \tag{K-1} 124012113(K-1)
    K-1C = P :
    [ 9 15 0 21 0 22 25 0 12 5 15 0 ] (P) \left[ \begin{matrix} 9 & 15 & 0 & 21 \\ 0 & 22 & 25 & 0 \\ 12 & 5 & 15 & 0 \end{matrix} \right] \tag{P} 901215225025152100(P)
    解密之后的明文是:I Love you

  3. hill密码的公式化表示方法一

    由上述例子可总结出hill密码的一般性,将m个连续的明文替换成m个密文字母,这是由m个线性等式决定的,例如m = 3

    c1 = k11p1 + k12p2 + k13p3
    c2 = k21p1 + k22p2 + k23p3
    c3 = k31p1 + k32p2 + k33p3 在这里插入图片描述
    密文 = 密钥 * 明文
    明文 = 密钥的逆* 密文

    一般加密算法
    C = E(K,P) = KP mod 26
    P = D(K,C) = K-1C = K-1KP mod26 = P

  4. hill密码的公式化表示方法二

    将m个连续的明文替换成m个密文字母,这是由m个线性等式决定的,例如m = 3

    c1 = k11p1 + k21p2 + k31p3
    c2 = k12p1 + k22p2 + k32p3
    c3 = k13p1 + k23p1 + k33p1
    在这里插入图片描述
    密文 = 明文 * 密钥
    明文 = 密文 * 密钥的逆

一般加密算法

C = E(K,P) = PK mod 26
P = D(K,C) = CK-1 = PKK-1 mod26 = P

  1. 注意
    (1)在hill加密算法中,可逆矩阵K不是唯一的,可任选去一个可逆矩阵;
    (2)明文的编码矩阵也是不唯一的,可以是3列,可以是4列;

4.置换技术

  1. 定义:置换是指改变明文字符的排列方式。
  2. 例子:
    在这里插入图片描述

5.思考

  1. 希尔密码中字母与数字的对应关系是确定的吗?

  2. 补位字符可以是任意字符吗?

  3. 上述2中方式可以颠倒吗?(逆矩阵是1*1矩阵)

  4. playfair密码中I/J为什么放在一起?

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值