密码学-古典密码学习笔记

article/2025/9/25 6:46:11

文章目录

  • 参考资料
  • 替代技术
    • 单字母表替代密码
      • 凯撒密码
      • 移位密码
      • 仿射密码
      • 针对单字母表替代密码的攻击
    • 多字母表替代密码
      • Vigenere密码
      • Hill密码(希尔密码)
  • 置换技术
    • 置换密码的定义
    • 案例

本文作为一篇学习笔记,在图片和文字上大量参考了各种密码学书籍,并添加了自己的注解和理解;古典密码学的学习需要一些数论的知识,比如模运算、扩展的欧几里得算法;在入门学习过程中没必要系统地学习数论,只需学习必要知识即可

古典密码的加密思想和方法在现代密码学中仍然在使用,古典密码的加密技术主要分为

  • 替代技术
  • 置换技术

参考资料

《网络安全理论与应用》余研 付安民 …编著
《图解密码技术》第三版 结成浩著

替代技术

替代技术是将明文中的每个元素映射为另一个元素的技术。若把明文视为二进制序列,则替代技术就是用密文序列来代替明文序列。代替后,字母位置不变,其本身的值发生改变。而后面介绍的置换技术是字母的值不变,字母在明文中的位置发生改变。

注解:
DES的S盒就是一张替代表
元素指的是:字母、比特、比特组合或字母组合

根据替代是对每个字母逐个进行还是对多个字母同时进行,古典密码又可以分为

  • 单字母表替代密码
  • 多字母表替代密码

基于替代技术的古典密码有凯撒密码、移位密码、仿射密码、Vigenere密码、Hill密码等。

单字母表替代密码

凯撒密码

凯撒密码是已知最早的替代密码。凯撒密码将字母表视为一个循环的表,将明文中的每个字母使用字母表中其后的第三个字母来代替;
凯撒密码中明文字母和密文字母的对应关系
在这里插入图片描述

例如
若明文为i will go fishing tomorrow
则密文为L ZLOO JLVKLQJ WRPRUURZ

若令每个字母对应一个数字(a=0, b=1, …, z=25),m表示明文字母,c表示密文字母,且0≤m,c≤25,则凯撒算法的加密和解密可以形式化表示为
c = E 3 ( m ) = ( m + 3 ) m o d 26 c=E_3 (m)=(m+3) mod 26 c=E3(m)=(m+3)mod26
m = D 3 ( c ) = ( c − 3 ) m o d 26 m=D_3 (c)=(c-3) mod 26 m=D3(c)=(c3)mod26
可见,3是加解密所使用的密钥。
在凯撒密码中,密钥的值固定为3,因此很容易对凯撒密码进行攻击。

移位密码

为了增大凯撒密码的密钥空间,将凯撒密码的加解密算法进行一般化,定义密文字母和明文字母的偏移可以是任意值,即定义移位密码的加密和解密形式为
c = E k ( m ) = ( m + k ) m o d 26 c=E_k (m)=(m+k) mod 26 c=Ek(m)=(m+k)mod26
m = D k ( c ) = ( c − k ) m o d 26 m=D_k (c)=(c-k) mod 26 m=Dk(c)=(ck)mod26
其中,0≤m,c≤25,k为算法的密钥,且0≤k≤25。

尽管移位算法将密钥空间扩展至字母表的长度,但其密钥空间仍然太小,只有26种可能的取值,仍然可以轻易地穷举整个密钥空间来破译密文,平均只需尝试26/2=13次即可计算得到明文。

仿射密码

移位密码的密钥空间太小,仿射密码就是移位密码的更一般形式;在仿射密码中,加密函数定义为
c = E ( a , b ) ( m ) = ( a m + b ) m o d 26 c=E_{(a,b)} (m)=(am+b) mod 26 c=E(a,b)(m)=(am+b)mod26 (1)
其中 a , b ∈ Z 26 a,b∈Z_{26} a,bZ26。形如上式的函数被称为仿射函数,因此该密码体制也被称为仿射密码
特别地,当a = 1时,移位密码为仿射密码的特殊形式。

为了能对密文进行解密,必须保证所使用的仿射函数是一个单射函数,即对于任意的 c ∈ Z 26 c∈Z_{26} cZ26,同余方程 a m ≡ ( c − b ) m o d 26 am≡(c-b) mod 26 am(cb)mod26 有惟一解m

可以证明,当 g c d ( a , 26 ) = 1 gcd(a,26)=1 gcd(a,26)=1时, a a a Z 26 Z_{26} Z26上存在乘法逆元 a − 1 a^{-1} a1,使得同余方程存在惟一解: m = a − 1 ( c − b ) m o d 26 m=a^{-1} (c-b) mod 26 m=a1(cb)mod26 (2)

(2)式由同余的除法得到
gcd是greatest common digital, 其中gcd(c,m)表示c和m的最大公约数

因此,仿射密码的解密函数可以定义为
m = D ( a , b ) ( c ) = a − 1 ( c − b ) m o d 26 m=D_{(a,b)} (c)=a^{-1} (c-b) mod 26 m=D(a,b)(c)=a1(cb)mod26
其中,a,b是密钥,且为满足 ( a , b ) ∈ Z 26 × Z 26 (a,b)∈Z_{26}×Z_{26} (a,b)Z26×Z26 g c d ( a , 26 ) = 1 gcd(a,26)=1 gcd(a,26)=1的整数。

案例
加密:
在这里插入图片描述
解密:

在这里插入图片描述

加密很容易计算,这里不在叙述;
解密使用扩展的欧几里得算法:步骤如下

  • 用扩展的欧几里得算法求的乘法逆元a-1
  • 乘法逆元算出来后,进行模运算即可
    求乘法逆元手算如下

因为 7 x = 1 m o d 26 7x = 1mod 26 7x=1mod26, x的取值即为7mod26下的乘法逆元
7 x + 26 y = g c d ( 7 , 26 ) = 1 7x + 26y = gcd(7,26)=1 7x+26y=gcd(7,26)=1 记为 (2)
用扩展的欧几里得算法求出x即可

运算过程如下:
第一步:进行辗转相除(写成等式形式)

26 = 3×7 + 5; ⇒ 5 = 26 - 3×7
7 = 1×5 + 2; ⇒ 2 = 7 -1×5 
5 = 2×2 + 1; 1 = 5 - 2×2

其中 26为被除数,3为商,7为除数,5为余数;将余数5用26和7表示出来,方便后面进行回带

回带过程
为了求出x,根据(2)式用7和26表示1即可算出x和y的值;可以通过保持商不变,替换掉除1以外的所有余数来实现;

1 = 26 - 3×7 - 2×[ 7 - 1×(26 - 3×7 ) ] 这里替换掉上面式子中的余数2和余数5;
1 = 3×26 - 11×7 可得到 x=-11 y=3
x = -11 mod 26 等价于 x = (-11 + 1×26) mod 26 等价于x = 15 mod 26

为了方便计算,这里取x=15即可
因此在计算时,7mod26下的乘法逆元为15;
解密函数为
m = D 7 , 3 ( c ) = 15 ( c − 3 ) m o d 26 m = D_{7,3} (c) = 15(c - 3) mod 26 m=D7,3(c)=15(c3)mod26

计算举例
当c=4时,m=15(4- 3)mod 26 = 15

针对单字母表替代密码的攻击

单字母表替代密码可以实现字母表中26个字母的任意替代,密钥空间大小为26!,即有大于 4 × 1 0 26 4×10^{26} 4×1026种可能的密钥,即使每微秒尝试一个密钥,也需要花费约 1 0 13 10^{13} 1013年才能穷举所有的密钥。因此,单字母表替代密码可以抵御强行攻击。

然而,如果密码攻击者知道明文的性质(例如,明文是自然语言文本),则攻击者可以利用该自然语言的某些统计特性实施攻击。

例如,在英语中,字母出现频率依次为e(12.75%),其次分别为t(9.25%)、r(8.5%)、i(7.75%)、n(7.75%)以及o(7.5%)等,字母的出现频率呈现出一定的统计特性。

攻击者可以根据密文中字母、双字母组合(如th)甚至三字母组合(如the)出现的相对频率进行猜测,只要密文足够长,攻击者即可由明文推导出密文

攻击者利用明文的统计特性针对单字母替代密码实施攻击的步骤如下:

  1. 攻击者确定密文中字母出现的相对频率;
  2. 将密文字母的出现频率与自然语言的标准频率分布进行比较;
  3. 还可以观察双字母组合和三字母组合等,以便对明文进行猜测。

频率分析的具体案例可以参考《图解密码技术》

局限性:由于单字母替代密码反映了原来字母表的频率特性,因此很容易被攻破;

多字母表替代密码

为了减少密文中明文结构的残余度,改善单字母密码的强度,出现了多字母密码技术。
在多字母替代密码中,处理明文消息时使用了不同的单字母替代。

多字母替代密码通常具有以下性质:

  • 使用一系列相关的单字母替代规则;
  • 由密钥决定对于一个给定的变换选择哪种特定的规则。

典型的多字母表替代密码包括Vigenère密码、Hill密码等。

Vigenere密码

字母表替代密码中最著名和最简单的密码是Vigenère密码,其发明者是16世纪的法国人Blaise de Vigenère
Vigenère密码的替代表由26个移位密码替代表组成,它在处理明文消息中的每个字母时使用了不同的单字母替代。

加密过程可以形式化描述为 c i = ( m i + k i m o d r ) m o d 26 c_i=(m_i+k_{i mod {r}}) mod 26 ci=(mi+kimodr)mod26

因此,Vigenère密码本质上是对每个明文字母使用了不同的单字母替代密码,而具体使用哪个单字母替代表则是由密钥字母确定。
在这里插入图片描述

解密过程如下:
m i = ( c i − k i m o d r ) m o d 26 m_i=(c_i-k_{i mod r}) mod 26 mi=(cikimodr)mod26
Vigenère密码的加解密过程中,重复使用相同的密钥字母串K,直至所有的消息均加解密完成。

案例
例:假设密钥字为“HAPPYTIME”,待加密的明文为“please send the data”,试计算相应的密文。
解:密钥对应的数字串为K=(7,0,15,15,24,19,8,12,4),将密钥串重复书写在由明文串转换的数字上方,进行模26下的加密运算,如下所示:
在这里插入图片描述

对应的密文串为WLTPQXAQRKTWTBTBM
解密时使用相同的密钥字进行逆运算即可。

总结
Vigenère密码中不同的密钥对应着不同的单字母替代,其密钥空间的大小为 2 6 r 26^r 26r,即使r值很小,使用穷尽搜索方法也需要很长的时间才能遍历密钥空间,因此,多字母表替代密码的安全性要比单字母表替代密码的安全性要好

Hill密码(希尔密码)

Hill密码是一种具有代表性的多字母表替代密码,由Lester S. Hill于1929年提出。
Hill密码使用了线性变换来实现加密解密功能。

加密过程
在Hill密码中,首先将明文M划分为由n个字母构成的分组 M = ( m 1 , m 2 , . . . , m n ) M=(m_1,m_2,...,m_n) M=(m1,m2,...,mn),密钥K取为n×n的矩阵,对于明文M和密钥K,计算密文C如下:

在这里插入图片描述

解密过程
在Hill密码中密文是通过明文进行线性变换得到。若要从密文中计算得到明文,需要进行解密变换,相应的明文应为 M = C K − 1 M=CK^{-1} M=CK1。即要求矩阵 K K K在模 q q q的情形下存在可逆矩阵 K − 1 K^{-1} K1
由线性代数可知,矩阵K在模q的情形下存在可逆矩阵K-1的充分必要条件是 g c d ( ∣ K ∣ , q ) = 1 gcd(|K|, q)=1 gcd(K,q)=1,且 K − 1 = ∣ K ∣ − 1 K ∗ K-1=|K|-1K^{*} K1=K1K
因此,Hill密码的解密过程为
M = C K − 1 m o d q M=CK^{-1} mod q M=CK1modq

置换技术

对于基于替代技术的密码而言,其明文字母被不同的密文字母所代替。而置换密码则不同,置换技术是在不丢失信息的前提下对明文中的元素进行位置上的重新排列,以打乱明文字母的位置和顺序。

在对称密码中,经常使用各种置换表进行置换选择。

定义在有限集X上的一个置换是一个双射函数 f : X → X f:X→X f:XX。即对于任意的 y ∈ X y∈X yX,存在唯一的 x ∈ X x∈X xX使得 f ( x ) = y f(x)=y f(x)=y,从而可以定义置换f的逆置换: f − 1 : X → X f^{-1}:X→X f1:XX
f − 1 ( y ) = x f^{-1} (y)=x f1(y)=x当且仅当 f ( x ) = y f(x)=y f(x)=y
其中, f − 1 f^{-1} f1也是X上的一个置换。

置换密码的定义

假设M为明文,C为密文,令n是一正整数 , x i , y i ∈ Z 26 ,x_i,y_i∈Z_{26} xi,yiZ26,K是由所有定义在集合{1,2,…,n}上的置换组成,对于任意的置换(即密钥)f,加密过程为
C = E f ( x 1 , x 2 , ⋯ , x n ) = ( x f ( 1 ) , x f ( 2 ) , ⋯ , x f ( n ) ) C=E_f(x_1,x_2,⋯,x_n )=(x_{f(1)} ,x_{f(2)} ,⋯,x_{f(n)} ) C=Ef(x1,x2,,xn)=(xf(1),xf(2),,xf(n))
解密过程为
M = D f ( y 1 , y 2 , ⋯ , y n ) = ( x f − 1 ( 1 ) , x f − 1 ( 2 ) , ⋯ , x f − 1 ( n ) ) M=D_f(y_1,y_2,⋯,y_n )=(x_{f^{-1} (1) },x_{f^{-1} (2) },⋯,x_{f^{-1} (n) }) M=Df(y1,y2,,yn)=(xf1(1),xf1(2),,xf1(n))
其中, f − 1 f^{-1} f1是置换 f f f的逆置换。

案例

在这里插入图片描述

解:首先将明文分组,每9个一组:
securityi|sthedegre|eofresist|ancetohar|morattack
对每组的9个字母使用加密变换f,可得密文:
CTRISUYEI|HGDESERTE|FIETERSOS|CHTRAEANO|RATKMACOT
解密过程使用逆置换 f − 1 f^{-1} f1,可恢复明文
securityi|sthedegre|eofresist|ancetohar|morattack


http://chatgpt.dhexx.cn/article/jShHgElh.shtml

相关文章

古典密码算法实验c语言,古典密码实验报告.doc

古典密码实验报告.doc 哈尔滨工程大学实验报告实验名称古典密码算法班级学号姓名实验时间2014年4月成绩指导教师实验室名称哈尔滨工程大学实验室与资产管理处制一、实验名称古典密码算法2、实验目的通过编程实现经典的代替密码算法和置换密码,包括移位密码、维吉尼…

古典密码学学习笔记

1.历史 古典密码阶段:1949年以前 近代密码阶段:1949-1975年 现代密码阶段:1976年至今 2.加密方法 古典密码学的加密方法主要有两大类:替代和置换,或者是两者的结合 3.基本密码 1.键盘布局加密 这是一种比较简单也…

古典密码

古典密码将明文的每一个字母代换为字母表中的另一个字母,代换前现将明文字母用等价的十进制数字代替,使用十进制进行运算。 字母abcdefghijklm数字0123456789101112 字母nopqrstuvwxyz数字13141516171819202122232425 根据代换是对每个字母逐个进行还是…

初学古典密码

古典密码 目录 古典密码 Wiki篇 二,凯撒密码Caesar: 三,移位密码 四,Atbash Cipher(埃特巴什码): 五,简单替换密码 六,仿射密码(affine cipher) 多表…

简单古典密码

1. 简单移位密码 m "{easy_easy_crypto}" k 3124 明文所在位置1234密文所在位置3124 flag{easy_easy_crypto}lafgea{s_eyay_scyprt}o 攻击方法:肉眼识别/爆破秘钥/根据flag字符串逆推 2. 曲路密码 明文填入一个表中,并按照一定的曲路遍历攻击方法…

古典密码技术

古典密码技术 古典密码是密码学中的其中一个类型,其大部分加密方式都是利用替换式密码或移项式密码,有时则是两者的混合。其于历史中经常使用,但在现代由于计算机的出现,使得古典密码解密已经不再困难,已经很少使用&a…

古典密码简记

目录 概述 传统隐写 替换密码技术 换位密码技术: 安全性分析 概述 古典密码只是对字母进行变换,而现代密码算法是对比特流进行变换。 古典密码技术比较简单,通常 采用手工或机械操作来对明文进行加密和解密的。(例&#xf…

常见古典密码

古典密码 文章目录 古典密码前言1.Affine(仿射加密)2.Bacon(培根加密)3.Brainfuck4.Caesar(凯撒加密)5.Fence(栅栏加密)6.Fenham(费纳姆加密)7.Morse(摩斯密码)8.Pigen(猪圈加密)9.Vigenere(维吉尼亚加密) 前言 系统的学习了一下古典密码,这里大概整理一下主要的加…

古典密码学

主要划分方式及其分类 按密钥方式划分:对称,非对称 按明文处理方式分:块密码,流密码 按编制原理划分:代换,置乱 对称加密算法 对称加密算法 对称加密算法(synmetric algorithm)&…

古典密码总结

古典密码 凯撒密码凯撒位移(中文版) 栅栏密码棋盘密码乘法密码仿射密码希尔密码摩斯电码猪圈密码键盘密码参考 凯撒密码 加密公式:密文 (明文 位移数) Mod 26 解密公式:明文 (密文 - 位移数) Mod 26 凯撒位移(中…

古典密码(部分合集)

古典密码 一. 移位密码1. 简单移位密码2. 曲路密码3. 云影密码4. 栅栏密码 二. 代替密码单表代替密码1.凯撒密码2.ROT133.埃特巴什密码4.经典单表替代密码5.摩斯密码6.培根密码7.图形替换密码猪圈密码圣堂武士密码标准银河密码 8.仿射密码 多表代替密码1.棋盘密码PlayfairPolyb…

密码学:古典密码.

密码学:古典密码. 古典密码是密码学的一个类型,大部分加密方式是利用替换式密码或移项式密码,有时是两者的混合。古典密码在历史上普遍被使用,但到现代已经渐渐不常用了。一般来说,一种古典密码体制包含一个字母表(如…

古典密码汇总。

一、密码类型汇总 23、维吉尼亚密码(Vigenre Cipher) 【Vigenre Cipher】 由于频率分析法可以有效的破解单表替换密码,法国密码学家维吉尼亚于1586年提出一种多表替换密码,   即维吉尼亚密码,也称维热纳尔密码。维…

SourceTree的使用

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作。同时它也是Mercurial和Subversion版本控制系统工具。支持创建、提交、clone、push、pull 和merge等操作。 二、下载安装SourceTree步骤 1、下载地址&#xf…

SourceTree使用教程图文详解

作者的其他平台: | CSDN:https://blog.csdn.net/qq_41153943 | 掘金:https://juejin.cn/user/651387938290686 | 知乎:https://www.zhihu.com/people/1024-paper-96 | GitHub:https://github.com/JiangXia-1024?t…

Sourcetree打开之后,闪退,问题处理

1、环境:win11 Sourcetree版本3.4.7 2、处理办法,在资源管理器地址栏输入“%LocalAppData%\Atlassian”,删掉“SourceTree.exe_Url_ampbpf5kvqim4xxkhaykobjynfannkxz”(非SourceTree目录),打开正常。

Sourcetree查看某个文件提交历史记录

1、在文件状态右上角搜索要查看的文件名 2、选择查看的文件名右键 点击变更历史即可

sourcetree使用

由于在工作中负责线上代码的部署和控制,所以对SourceTree的使用场景和使用技巧进行了全面系统的研究和实践,并以经验连载的形式进行了分享。该经验主要是对这些连载经验进行整体的概述,以方便大家的查阅和参考。 方法/步骤 SourceTree使用的…

sourceTree打不开,启动闪退

应该还是缓存文件的问题: C:\Users\wangqiang\AppData\Local\Atlassian 把这个临时文件删掉:

sourcetree使用说明

功能全面介绍 OK,拔山涉水终于安装完毕,进入主页是长这个样子 1.主页 几个按钮作用:如图,其中过滤仓库搜索框其实就是个搜索框,可以根据仓库名字的关键字搜索出仓库,右上角的设置按钮比较简单这里就不再解释大家自行点开一下就明白了 Snip20171208_22.png 新建按钮解释 Sni…