【密码学】二、古典密码

古典密码

  • 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://www.mzph.cn/news/5809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【云原生】Prometheus之图形化界面grafana与服务发现部署

前言 上一篇文章中我们介绍了Prometheus的组件,监控作用,部署方式,以及如何通过在客户机安装exporter再添加监控项的操作。但是不免会发现原生的Prometheus的图像化界面对于监控数据并不能其他很好的展示效果。所以本次我们将介绍一款开源非常…

06-Vue基础之事件处理

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:懒惰受到的惩罚不仅仅是自己的失败,还有别人的成功。 🎅**学习目标: 坚持每一次的学习打卡 文章…

Hive自定义函数

本文章主要分享单行函数UDF(一进一出) 现在前面大体总结,后边文章详细介绍 自定义函数分为临时函数与永久函数 需要创建Java项目,导入hive依赖 创建类继承 GenericUDF(自定义函数的抽象类)(实现…

HP惠普暗影精灵9笔记本原装出厂Win11系统预装专用OEM系统镜像

暗影9笔记本电脑原厂Windows11系统包 OMEN by HP 16.1英寸游戏本16-wf0000,16-wf0001,16-wf0003,16-wf0004,16-wf0006,16-wf0008,16-wf0009,16-wf0010,16-wf0011,16-wf0012,16-wf0028,16-wf0029,16-wf0007,16-wf0032,16-wf0036,16-wf0043 链接:https://pan.baidu.…

[SQL系列] 从头开始学PostgreSQL 自增 权限和时间

[SQL系列] 从头开始学PostgreSQL 事务 锁 子查询_Edward.W的博客-CSDN博客https://blog.csdn.net/u013379032/article/details/131841058上一篇介绍了事务,锁,子查询 事务有点像是原子操作,需要有完整性,要么全都完成了&#xff…

win11我们无法创建新的分区也找不到现有的分区

U盘重装系统的时候 提示:win11我们无法创建新的分区也找不到现有的分区 ShiftF10 ,调出 命令提示符; diskpart list disk select disk 盘编号 clean convert gpt 参考:怎么解决我们无法创建新的分区也找不到现有的分区问题&#x…

STM32F407-- DMA使用

目录 1. DMA结构体 STM32F103: STM32F407: 2. F4系列实现存储器到存储器数据传输 1)结构体配置&初始化 2)主函数 补充知识点:关于变量存储的位置,关于内部存储器一般存储什么内容 3. F4系列实现…

C++OpenCV(4):图像截取与掩膜操作

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 🔆 OpenCV项目地址及源代码:点击这里 文章目录 图像截取图像掩膜操作 图像截取 ROI操作,指的是:region of interest,感兴趣区域。 我们可以对一张…

Android Studio 修改AVD模拟器文件默认存储路径

AndroidStudio默认的模拟器文件路径为:C:\Users\用户名\.android\avd路径,通常windows系统上,C盘不是太大,而avd文件却不小,通常几个GB,所以有必要将avd路径换到一个非系统盘。 更换方法如下:H…

LocalDateTime、OffsetDateTime、ZonedDateTime之间的关系

什么是LocalDateTime? ISO-8601日历系统中不带时区的日期时间。 该类不存储时区,所以适合日期的描述,比如用于生日、deadline等等。 但是如果没有偏移量/时区等附加信息,一个时间是不能表示时间线上的某一时刻的。 什么是Offset…

20230720在ubuntu22.04系统下载+解密+合并ts切片的步骤(STEP-BY-STEP版本)

20230720在ubuntu22.04系统下载解密合并ts切片的步骤(STEP-BY-STEP版本) 2023/7/20 23:06 https://app1ce7glfm1187.h5.xiaoeknow.com/v2/course/alive/l_64af6130e4b03e4b54da1681?type2&app_idapp1cE7gLFM1187&pro_idterm_645c69388953e_Nhew…

论文工具——ChatGPT结合PlotNeuralNet快速出神经网络深度学习模型图

文章目录 引言正文PlotNeuralNet安装使用使用python进行编辑使用latex进行编辑 样例利用chatGPT使用chatGPT生成Latex代码利用chatGPT生成对应的python代码 总结引用 引言 介绍如何安装PlotNeuralNet工具,并结合chatGPT减少学习成本,快速出图。将按照软…

前端Web实战:从零打造一个类Visio的流程图拓扑图绘图工具

前言 大家好,本系列从Web前端实战的角度,给大家分享介绍如何从零打造一个自己专属的绘图工具,实现流程图、拓扑图、脑图等类Visio的绘图工具。 你将收获 免费好用、专属自己的绘图工具前端项目实战学习如何从0搭建一个前端项目等基础框架项…

java学习(二):反射

系列文章目录 https://editor.csdn.net/md/?articleId131757340 文章目录 系列文章目录参考【1】注解1. 什么是注解2. 内置注解3. 元注解4.自定义注解 【2】反射--基本概念一、反射的基本概念1. 为什么要用反射?2. 什么是反射?3. 用和不用反射的区别&a…

代码随想录-回溯(组合问题)|ACM模式

目录 前言: 77.组合 题目描述: 输入输出示例: 思路和想法: 216. 组合总和 III 题目描述: 输入输出示例: 思路和想法: 17. 电话号码的字母组合 题目描述: 输入输出描述&a…

MyBatis的多表操作

1 MyBatis的多表操作 1.1 多表模型介绍 我们之前学习的都是基于单表操作的,而实际开发中,随着业务难度的加深,肯定需要多表操作的。 多表模型分类 一对一:在任意一方建立外键,关联对方的主键。 一对多:在…

实用便捷!一站式BI系统推荐

在企业数字化转型过程中,BI系统可以建立业务、数据的双驱引擎,形成业务、数据的互补作用,通过建立数字化技术架构,明确企业的战略定位和业务目标,从而支撑实现这个目标。而一站式BI系统,则是指可以轻松从数…

【MySQL】SQL性能分析 (七)

🚗MySQL学习第七站~ 🚩本文已收录至专栏:MySQL通关路 ❤️文末附全文思维导图,感谢各位点赞收藏支持~ 假如我们需要对SQL进行优化,我们就必须对他足够的了解,比如 对哪一类SQL进行优化(增删改查…

基于物联网网关的工业数据可视化平台有什么功能?

随着数字化浪潮的不断发展,工业数据的价值越来越重要。在企业利用数据的过程中,数据可视化是数字化系统中十分重要的一部分。然而,工厂多种设备、多种协议影响到系统的搭建使得企业无法获得全面的数据视图,也无法对整个生产流程进…

OJ练习第142题——路径总和 II

113. 路径总和 II 力扣链接:113. 路径总和 II 题目描述 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 Java代码(深度优先搜…