【密码学】二、古典密码

news2024/11/27 1:31:34

古典密码

  • 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.coloradmin.cn/o/780397.html

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

相关文章

【事业单位-语言理解1】中心理解02

【事业单位-语言理解1】中心理解02 1.中心理解1.1 并列关系1.2 主题词1.3程度词,表示强调 二、标题填入题(优先考虑主题词)三、词句理解题 1.中心理解 解题思路 1.1 并列关系 涉及时间顺序 注意选项不要逻辑不当 并列关系的时候&…

07统计模型练习

使用SPSS进行分析求解 第一题 下表1.1是中国1994-2016年国内旅游总花费Y、国内生产总值X1、铁路里程X2和公路里程X3的数据,请据此分析如下问题: (1)就建立简单线性回归模型,分别分析中国国内旅游总花费与国内生产总值、铁路里程和公路里程数据的数量关系。 (2)对建立的回归模型…

K8S下如何搭建eureka集群

背景 传统应用上云,基于传统应用需要考虑上云的方案和改造成本,这也是传统应用上云过程中的难点,本篇介绍3台eureka搭建的方案。 方案一 此方案借助了K8S中Service的一些功能。 这种方案是传统方案的简单迁移版本,比较易于理解…

前端 | ( 十一)CSS3简介及基本语法(上) | 尚硅谷前端html+css零基础教程2023最新

学习来源:尚硅谷前端htmlcss零基础教程,2023最新前端开发html5css3视频 系列笔记: 【HTML4】(一)前端简介【HTML4】(二)各种各样的常用标签【HTML4】(三)表单及HTML4收尾…

一键批量JSON标注转PNG图片工具V1.1,支持labelme快捷矩形、圆以及轮廓标注

上次发布了一个批量将labelme标注的json文件转换为png文件工具,但是当时只是想着自己用的,功能相当简单,一些网友使用之后跟我反馈这玩意真”垃圾“,很多情况都没有进行设想,所以在功能上很欠缺。由于小陶这几天在外地…

Rust vs Go:常用语法对比(三)

题图来自When to use Rust and when to use Go[1] 41. Reverse a string 反转字符串 package mainimport "fmt"func Reverse(s string) string { runes : []rune(s) for i, j : 0, len(runes)-1; i < j; i, j i1, j-1 { runes[i], runes[j] runes[j], runes[i]…

高等数学❤️第一章~第三节~极限❤️连续函数的运算与初等函数的连续性~连续函数的运算

【精讲】高等数学中连续函数的运算 博主&#xff1a;命运之光的主页 专栏&#xff1a;高等数学 目录 【精讲】高等数学中连续函数的运算 导言 一、连续函数的运算规则 二、连续函数的性质 必需记忆知识点 例题&#xff08;用于熟悉高等数学中连续函数的运算&#xff09;…

【Java基础教程】(四十二)多线程篇 · 上:多进程与多线程、并发与并行的关系,多线程的实现方式、线程流转状态、常用操作方法解析~

Java基础教程之多线程 上 &#x1f539;本节学习目标1️⃣ 线程与进程&#x1f50d;关于多进程、多线程、并发与并行之间的概念关系&#xff1f; 2️⃣ 多线程实现2.1 继承 Thread 类2.2 实现 Runnable 接口2.3 多线程两种实现方式的区别2.4 利用 Callable 接口实现多线程2.5 …

Windows Server 2012 搭建网关服务器并端口转发

需求 使用 Windows server 作为Hyper-V 虚拟出许多虚拟机&#xff0c;基本上都分配了内网地址&#xff0c;现在需要这些虚拟机访问外网&#xff0c;或者外网直接访问这些虚拟机&#xff0c;必须配置一个网关服务器。我决定直接使用 Windows 的远程访问中的 NAT 服务来完成。 …

Ubuntu 上编译protobuf 指

欢迎大家关注我的B站主页MYVision_MY视界的个人空间-MYVision_MY视界个人主页-哔哩哔哩视频 下载protobuf GitHub - protocolbuffers/protobuf: Protocol Buffers - Googles data interchange format 根据需要从release 中下载指定的版本 下载完之后&#xff0c;根据提供的C…

Elasticsearch:使用 Elasticsearch ingest pipeline 丰富数据

在我之前的文章&#xff1a; Elasticsearch&#xff1a;如何使用 Elasticsearch ingest 节点来丰富日志和指标 Elasticsearch&#xff1a;enrich processor &#xff08;7.5发行版新功能&#xff09; 我有详细描述如何使用 ingest pipeline 来丰富数据。在今天的文章中里&am…

Stable Diffusion入门笔记(自用)

学习视频&#xff1a;20分钟搞懂Prompt与参数设置&#xff0c;你的AI绘画“咒语”学明白了吗&#xff1f; | 零基础入门Stable Diffusion保姆级新手教程 | Prompt关键词教学_哔哩哔哩_bilibili 1.图片提示词模板 2.权重&#xff08;提示词&#xff09; 无数字 (flower)//花的…

1 快速构建mybatis项目

1.1 使用Maven的quickstart框架 注意是不出现w的quickstart&#xff1a; 1.2 加入依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</s…

如何评测一个大语言模型?

编者按&#xff1a;大型语言模型&#xff08;Large language models, LLMs&#xff09;因其在学术界和工业界展现出前所未有的性能而备受青睐。随着 LLMs 在研究和实际应用中被广泛使用&#xff0c;对其进行有效评测变得愈发重要。近期已有多篇论文围绕大模型的评测进行研究&am…

二级分类基本实现步骤(小兔鲜儿)【Vue3】

二级分类 整体认识和路由配置 二级分类功能描述 配置二级路由 准备组件模版 <script setup></script><template><div class"container "><!-- 面包屑 --><div class"bread-container"><el-breadcrumb separa…

OA会议管理系统之会议发布(内含原型图项目介绍多功能下拉框源码)

目录 一、前言 1.什么是OA会议 2.OA会议项目背景 二、会议发布功能实现 1.功能介绍 2.功能分析 1.原型图以及数据表分析 2.查看官网搭建JSP页面 3.功能实现 1.实体类 2.dao层 3.JSP页面 4.Web层 4.案例演示 一、前言 1.什么是OA会议 会议OA指的是会议办公自动化…

设计模式结构型——外观模式

目录 什么是外观模式 外观模式的实现 外观模式的特点 什么是外观模式 外观模式&#xff08;Facade Pattern&#xff09;&#xff1a;又叫作门面模式&#xff0c;归属于结构型模式。外观模式定义了提供了定义了一个统一的高层接口&#xff0c;即为子系统中的一组接口提供一个…

PMP 数据收集工具与技术

数据收集工具与技术 (9个) 标杆对照 标杆对照是指将实际或计划的产品、流程和实践与其他可比组织的 做法进行比较&#xff0c;以便识别最佳实践、形成改进意见&#xff0c;并为绩效考核 提供依据。 头脑风暴 头脑风暴是一种数据收集和创意技术&#xff0c;主要用于在短时间…

苍穹外卖day05——Redis(被病毒入侵)+店铺营业状态设置

Redis被病毒入侵了 数据删光光然后只剩这四个玩意&#xff0c;乱下东西乱删东西&#xff0c;还好是docker部署&#xff0c;不然就寄了。 在服务器上部署redis记得一定要设置密码&#xff0c;不然被人扫肉鸡注入病毒整个服务器给你崩掉。 使用配置类的方式搭建相关程序 配置数…

【华为OD机试】经典屏保【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 DVD机在视频输出时,为了保护电视显像管,在待机状态会显示“屏保动画”, 如下图所示,DVD Logo在屏幕内来回运动,碰到边缘会反弹: 请根据如下要求,实现屏保Logo坐标的计算算法 1、屏…