【密码学】二、古典密码

article/2025/10/2 8:52:10

古典密码

  • 1.置换密码
    • 1.1列置换密码
    • 1.2周期置换密码
  • 2.代换密码
    • 2.1单表代换密码
      • 2.1.1凯撒密码
      • 2.1.2仿射密码
    • 2.2多表代换密码
      • 2.2.1维吉尼亚密码
      • 2.2.2普莱费尔密码
  • 3.轮转密码
    • 3.1恩尼格玛密码机Enigma
      • 3.1.1Enigma加密
      • 3.1.1Enigma解密
  • 4.古典密码的分类
  • 5.古典密码的统计分析
    • 5.1单表古典密码的统计分析
    • 5.2多表古典密码的统计分析
      • 5.2.1卡西斯基测试法Kasiski Test
      • 5.2.2重合指数法

本章介绍了置换密码,列举了列置换密码、周期置换密码两种典型的古典密码,简要概括了古典密码的特征和分类;介绍了代换密码,包括单表代换密码和多表代换密码;以Enigma为例,介绍了轮转密码;介绍了古典密码的分类;最后介绍了古典密码的统计分析。

1.置换密码

置换密码又称为换位密码,是指将明文中个字符的位置次序重新排序得到密文的一种密码体制。
特点:保持明文的所有字符不变,只是利用置换打乱了明文字符的位置和次序。

1.1列置换密码

按列进行换位,并且按列读出明文序列得到密文。
例子如下:明文"Beijing 2020 Olympic Winter Games"
密钥是(143)(56)
其中密钥展开是:

123456
421365

加密过程
解密过程使用的解密密钥是加密密钥的逆置换即:

123456
324165

解密过程

1.2周期置换密码

是将明文P按照固定常长度m分组,然后对每组的字符串按照(1,2,3,4…m)的置换重新排列位置从而得到密文。
解密的时候对密文c按照长度m分组,按照密钥的逆置换把每组重新排列,从而得到明文P。
例子:明文P=”Digital Copyright Protection Laboratory, Beijing University of Printing"
①密钥是(1 5 6 2 3),也就是:

123456
531462

②先将明文按照m=6进行分组:
(Digita)(lCopyr)(ightPr)(otecti)(onLabo)(ratory)(Beijin)(gUnive)(rsityo)(fPrint)(ing )
③然后对每一个分组使用密钥进行置换,如将(Digita)加密结果是(gaiiDt)
这样可以得到加密结果:
(gaiiDt)(orCply)(hrgtiP)(eitcot)(Lonaob)(tyaorr)(inejBi)(neUigv)(iostry)(rtPifn)(g n i)
④解密的时候先对密钥进行逆置换,即(1 3 2 6 5),也就是:

123456
362415

这样同样进行置换就可以得到解密结果。

2.代换密码

代替密码,就是将明文中每个字符替换成密文中的另一个字符,代替之后的各个字母保持原来的位置,再对密文进行逆替换就可以恢复出明文。

2.1单表代换密码

明文的一个字符用相应的一个密文字符代替。加密过程是从明文字母表到密文字母表的一一映射。

2.1.1凯撒密码

凯撒密码是使用最早的密码体制之一。是将英文字母表循环左移3位得到,因此凯撒密码也称为移位密码。

明文空间M=C=Z~26~ ;
密钥空间K~1~=K~2~=Z~26~;
加密函数E={E~k~ | k ∈ K~1~},其中E~k~(m ) = m + k(mod26),m∈M;
解密函数D={D~k~ | k ∈ K~2~},其中D~k~(c ) = c + k(mod26),c∈C;

凯撒密码

2.1.2仿射密码

gcd(a,26)表示a和26的最大公因子。
加密变换:c = Ea,b( m ) ≡ am + b(mod26)
解密变换:m = Da,b( c ) ≡ a-1 ( c-b )(mod26)

其中,a,b是密钥,满足a,b∈[0,25]并且gcd(a,26)=1的整数。a-1表示a的逆元,也就是a-1 · a ≡ 1mod26
例子如下,其中字母表与数字转换从0开始,即

abcdefghijklmnopqrstuvwxyz
012345678910111213141516171819202122232425

例子

2.2多表代换密码

多表代换密码是指依次对明文的各组信息使用无限多的或者有限个周期性重复的固定代换表进行替换来得到密文。
如果是使用无限多的固定代换表,那么就称为一次一密代换表(理论上唯一不可破解);如果使用有限个周期性重复的固定代换表,就称为周期多表代换密码(周期d,用密钥循环对明文进行加密)。

2.2.1维吉尼亚密码

维吉尼亚密码通过使用多个字母代换表,使得同一个字母在不同位置会被代换成为不同密文,循环使用密钥。
例子:
密钥“iscrupt”转换成数字为k={8 18 2 1 20 15 19}
明文为"cyber great wall corporation“,先将明文转换成数字,再与对应的密钥数字进行模26的和的计算结果,转换对应的密文字符。如下:
加密过程
①第一行是明文字母
②第二行是明文字母转换成对应的数字
③第三行是循环使用密钥的数字
④第四行是明文数字和密钥数字分别进行模26和的运算结果。

例如字符c的明文是2,与对应的密钥8相加结果是10,再取模26结果为10,就是对应的加密结果。

⑤第五行是将加密结果数字转换成对应的字母。
解密过程与加密过程在第四行的操作不一样,是将第二行和第三行进行模26的差的运算得到结果。

解密过程

2.2.2普莱费尔密码

将明文字母按两个字母一组(p1、p2)组成若干个单元,然后将这些单元替换成密文字母组合,替换时基于一个5x5的字母矩阵(使用一个选定的关键词来构造)。
矩阵构造:
从上到下从左到右,先将密钥添加进去,此时需要将重复的字母删除,后按照字母表的顺序将其他的字母填写进去。(字母I和J当作一个字母)
处理规则:
①若p1、p2在同一行,那么对应的密文是其右边第一个字母;
②若p1、p2在同一列,那么对应的密文是其下边第一个字母;
③若p1、p2在不同行不同列,那么对应的密文是以p1、p2为顶点的四边形的另外两个顶点,按照同一行进行匹配;
④若p1、p2相同,那么要在二者之间先插入一个实现约定好的字母;
⑤如果明文字母个数为奇数,那么需要在明文末尾添加上实现约定好的字母进行填充。

3.轮转密码

古典密码体制可以分为人工加密和机械加密两种。

3.1恩尼格玛密码机Enigma

Enigma是用键盘、齿轮、电池和灯泡组成的机器。发送者和接收者各自拥有一台机器。双方必须使用相同的密钥才可以完成加密通信,因此需要事先收到一份称为密码本的册子。

3.1.1Enigma加密

“每日密码”:用于加密密钥
“通信密码”:用于加密明文
①设置Enigma
先根据每日密码,设置机器的转子(每按下一个键,灯泡会显示对应密文的字母,同时第一个转子会转一圈,假设有m个字母,则第一个转了26圈之后,转子2就会转一圈,同理转子2转26圈之后转子3就会转一圈)。
②加密通信密码
也就是加密密钥。发送者选择好密钥(通信密码)之后(如3位),通过按键输入两次(是为了容错),这样就可以通过灯泡得到加密之后的密文。
③重新设置Enigma
发送者根据通信密码重新设置Enigma,通信密码中的3个字母实际上代表了转子的初始位置。
④加密消息
发送者对要发送的消息进行加密,通过按键和灯泡获取。
⑤拼接
发送者将通信密码的密文与加密之后的消息拼接起来进行传送。

3.1.1Enigma解密

①分解
接收者将接受到的消息分成密钥和消息两个部分的密文。
②设置Enigma
接收者通过查看每日密码进行机器设置
③解密通信密码
接收者将加密之后的通信密码进行解密。通过按键输入密文,灯泡会亮起对应的明文,这样就可以得到通信密码并且可以检测通信密码是否出错(因为传的时候是输入了两遍进行加密的)
④重新设置Enigma
接收者根据通信密码重新设置机器的转子和连接方式
⑤解密消息
接收者将电文剩余的部分进行按键输入和灯泡解密就可以得到最后的结果。

4.古典密码的分类

根据使用的密钥的数量是单一密钥还是多个密钥可以将古典密码分为单表古典密码和多表古典密码。
根据明文空间和密文空间是否一致可以将古典密码分为置换密码和代换密码。
在这里插入图片描述

5.古典密码的统计分析

5.1单表古典密码的统计分析

当截获的密文足够多的时候,可以通过统计密文字母的出现频率来确定明文字母和密文字母之间的对应关系。
如果已知所用的密码体制,那么相应的分析工作可能会简单一点。
统计方法是指某种语言中各个字符出现的频率不同而表现出一定的统计规律,这些统计规律可能在密文中重现,从而使攻击者利用这些统计规律,通过一些推测和验证过程来事先密码分析的方法。

5.2多表古典密码的统计分析

在多表古典密码中,相同的明文密文可能不相同。首先要确定密钥字的长度,也就是要确定所使用的加密表的个数,然后再分析确定具体的密钥。

5.2.1卡西斯基测试法Kasiski Test

在明文中,如果两个相同的明文片段之间的距离d是密钥长度m的倍数,那么这两个明文片段所对应的密文片段一定是相同的。反过来,如果密文中出现两个相同的密文片段(长度至少为3),那么它们所对应的明文片段极有可能是相同的,当然也可能不同。

通过计算相同密文片段之间的距离,取其公因子。

5.2.2重合指数法

利用重合指数法可以进一步确定密钥字的长度是否是m。
设x=x1x2…xn是一个长度为n的英文字母串。x的重合指数定义为x中的两个随机元素相同的概率。
公式
通过字母表进行计算得到Ic(x)≈0.065.所以一般可以用来验证由卡西斯基测试法得到的密钥的长度是否正确。
得到长度之后穷举法遍历可能的密钥,计算交互重合指数,重合指数最高的情况下最有可能是明文并且对应的琼剧结果是密钥字母。


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

相关文章

格密码与最短向量上界

目录 前言 一. BLICHFELD理论 二. 闵可夫斯基凸体定理 三. n维球体体积结论 四. 闵可夫斯基第一定理 五. 闵可夫斯基第二定理 结论 前言 本节主要讨论闵可夫斯基提出的关于连续最小值的上界问题。为了简化分析过程,仅讨论满秩的格,将结果类推到非…

一个苹果成就了牛顿,一个苹果杀死了图灵。

今天不发技术文章了。 假期看了一部电影《模仿游戏》,讲的是人工智能之父图灵的故事。 说起图灵,可能你知道他是计算机科学之父、人工智能之父。计算机领域最负盛名的奖项「图灵奖」都用他的名字命名。 但你可能不知道,二战期间,他…

使用 python 实现恩尼格码的加密

使用 python 实现恩尼格码的加密 又是摸鱼的一天查阅资料,尝试理解恩尼格码字符的映射混淆的次数反射板和转接线的设置描述转子转动的规律完整代码的实现 实现过程的复盘 又是摸鱼的一天 今天在问答胡混的时候,看到一个提问,关于恩尼格码的 …

密码分析学-Enigma机破解

密码分析学 Enigma机破解 目录 作业要求摘要正文一:Enigma机加密1.1 背景1.2 加密原理1.3 安全性分析1.4 加密算法实现 二:Enigma解密2.1 历史上的解密2.2 Enigma机破解原理2.2.1 寻找明密文对关系 -- Ciber2.2.2 通过环路屏蔽接线板2.2.3 还原接线板 2…

密码学的发展(第二篇:恩尼格码机)

1、恩尼格玛机 恩尼格码机又叫英格玛机、哑谜机器或者奇谜机,它在二战中大放异彩。它使用的本质还是第二代机密法----替代和移位。但因为可以切换无穷种加密配套组合,所以在对抗频率分析上极为有效。 恩尼格玛机是一种机械电子式的加密机,由…

密码学简史(一)--- 谍战中的古典密码学

文章目录 1. 隐藏法2. 移位法与替代法3. 维吉尼亚加密法3.1 维吉尼亚加密法的破解3.2 维吉尼亚加密法2.0版3.3 维吉尼亚加密法3.0版 4. 恩尼格玛密码机(Enigma)4.1 第一代恩尼格玛机的破解4.2 第二代恩尼格玛机的破解 更多文章: 密码学数千年的发展史,加…

MATLAB实现Enigma 密码机

Matlab 模拟实现 enigma 密码机。密码机包含三个转子和反射器,满足以下条件: 1. 输入信号从左往右通过各个转子(在到达反射器之前); 2. 根据输入信号的流经次序,从左到右将转子依次标号为转子 1、转子 2、…

通过Java实现恩尼格玛密码机

1 简介 前一段时间看了B站介绍恩尼格玛密码机的视频,试了试用Java来实现一台恩尼格玛密码机,在此文章中来简单介绍自己实现的思路和代码以供大家学习参考,如有错误,欢迎指出。 单表替换密码会由于字母分布的规律被破解出来&…

加密解密工具 之 恩尼格玛密码机密码

工具链接:http://www.atoolbox.net/Tool.php?Id993 恩尼格码密码机及加密原理 恩尼格码密码机是二战时期的纳粹德国及其盟国,特别是德国军方所使用的一种高级机械加密系统,以转子结构为主体。 密码机一般装在一个盒子里。当要加密一串字符…

恩尼格玛密码机原理解析(Enigma principle )

恩尼格玛机也结合了机械系统与电子系统。机械系统包括了一个包含了字母与数字的键盘,相邻地排列在一个轴上的一系列名为“转子” 的旋转圆盘,还有一个在每次按键后就使一个或几个转子旋转的装置。各种恩尼格玛机上的机械系统都各为不同,但是&…

使用HttpClient模拟POST请求

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。当前官网最新版介绍页是:http://hc.apache.org/httpcomponents-client-4…

fastmock模拟post、get请求

参考资料: fastmock 帮助文档 初学者可以根据这个文档了解如何创建项目 【前端必备基本技能】-fastMock平台使用_哔哩哔哩_bilibili 如果觉得文档不好理解的小伙伴可以看这个视频,本人觉得讲的很仔细。 Mock.js 实例练习: get请求 …

TCP模拟HTTP请求

HTTP的特性 HTTP是构建于TCP/IP协议之上,是应用层协议,默认端口号80 HTTP协议是无连接无状态的 HTTP报文 请求报文 HTTP协议是以ASCⅡ码传输,建立在TCP/IP协议之上的应用层规范。 HTTP请求报文由请求行(request line)、…

使用postman模拟post、get请求

postman通常作为一种接口测试工具,如:采用post、get等方式,模拟对接口进行访问,用于查看接口功能是否正常。 模拟POST请求 选择请求方式为POST 设置请求url地址 http://localhost:8081/webside/subSystemLogin.html 选择Header…

如何简单的模拟发送http post请求

有天在做项目演示的时候要用到post请求的模拟发送,为此总不至于写一个html页面,当时只记得百度了一下模拟发送http post请求,方法大概都是说用fiddler工具或者使用cmd内置telnet客户端模拟http请求。 这里抄送附上fiddler工具和telnet模拟po…

接口测试中模拟post四种请求数据

转自 作者:隋胖胖LoveFat 链接:https://www.jianshu.com/p/3b6d7aa2043a 来源:简书 一、背景介绍 在日常的接口测试工作中,模拟接口请求通常有两种方法,fiddler模拟和HttpClient模拟。 Fiddler是一个简单的http协议调…

谷歌学术访问

https://via.hypothes.is/ 不需要镜像,不需要任何操作,只需打开这个网站,输入你要访问的学术网站,秒开 第一步: 第二步:

谷歌学术(google scholar)个人主页的论文信息不准确怎么办?

题目:谷歌学术(google scholar)个人主页的论文信息不准确怎么办? 谷歌学术主页是很多人展示自己学术成果的一种方式,但很多时候,谷歌自动给你聚集到主页的论文信息是有误的,这时候怎么去编辑呢? 论文信息…

谷歌学术介绍

转载自:http://blog.renren.com/share/111541487/15517062888 “谷歌学术”是谷歌搜索引擎中的学术检索部分,相对于知网、维普、万方、Pubmed等专业的论文数据库来说功能单薄了些,但具有页面简约、搜索速度快、集国内外文献于一体、某些文章可…

Google 学术搜索(Google Scholar)使用技巧

本文简介Google 学术搜索(Google Scholar)使用技巧, 关于Web Of Science 上搜索文献,查看SCI分区及影响因子情况参见我的另一篇博客(https://xiongyiming.blog.csdn.net/article/details/78474211) Google…