密码学基础——古典密码学

news2025/4/7 9:15:29

目录

一、定义

特点:

二、发展阶段

三、代换密码

1.单表代换密码

1.1恺撒密码

1.2 移位变换  

1.3 仿射变换

2.多表代换密码

维吉尼亚密码

四、置换密码

栅栏密码


一、定义

    古典密码学是指在现代密码学出现之前,使用较为简单的数学方法和手工操作来实现信息加密的技术和理论。它主要依靠字符的代换、置换等基本操作来隐藏信息的真实内容。

  • 代换(替代):将明文中的每个字符替换为另一个字符,形成密文。例如,凯撒密码就是一种简单的代换密码,它将明文中的每个字母按照字母表顺序向后移动一定的位数来得到密文。
  • 置换(换位):不改变明文中的字符,而是通过重新排列字符的位置来形成密文。例如,栅栏密码就是将明文按照一定的规则分组,然后将每组中的字符顺序打乱重新排列得到密文。

特点

        古典密码的优点是算法相对简单,容易理解和实现。缺点是安全性较低,随着计算机技术的发展,很容易被破解。

二、发展阶段

  • 起源阶段

        古典密码学的历史可以追溯到古代。例如,公元前 1900 年左右,古埃及人就使用过一些简单的符号替换方法来加密信息。古希腊人使用一种名为 “天书” 的密码工具,通过将字母写在一条缠绕在木棒上的皮带上,来实现信息的加密和解密。

  • 发展阶段

        在中世纪,密码学得到了进一步的发展。许多国家的政府和军队开始使用密码来传递机密信息。例如,凯撒密码在罗马军队中被广泛使用。

  • 成熟阶段

        文艺复兴时期,密码学技术更加成熟,出现了多种复杂的加密方法,如维吉尼亚密码等。这些密码在当时的政治、军事和商业领域发挥了重要作用。

三、代换密码

        古典密码的加密是将明文的每一字母代换为字母表中的另一字母,代换前首先将明文字母用等价的十进制数字代替,再以代替后的十进制数字进行运算,字母与十进制数字的对应关系如表所示。

字母

a

b

c

d

e

f

g

h

i

j

k

l

m

数字

0

1

2

3

4

5

6

7

8

9

10

11

12

字母

n

o

p

q

r

s

t

u

v

w

x

y

z

数字

13

14

15

16

17

18

19

20

21

22

23

24

25

        根据代换是对每个字母逐个进行还是对多个字母同时进行,古典密码又分为单表代换密码和多表代换密码。  

1.单表代换密码

1.1恺撒密码

凯撒(Caesar)密码是将明文中的每个字母按照字母表顺序向后移动固定的位数(3位),得到密文。密代换和解密代换分别为:          

其中3是加解密所用的密钥,加密时,每个字母向后移3位(循环移位,字母x移到a,y移到b,z移到c)。解密时,每个字母向前移3位(循环移位)。

1.2 移位变换  

移位变换的加解密分别是:

1.3 仿射变换

仿射变换的加解密分别是:    

其中a,b是密钥,为满足0<=a,b<=25和gcd(a,26)=1的整数。其中gcd(a,26)=1表示a和26的最大公因子为1,表示a和26是互素的,a-1表示a的逆元,即 

【例题1】设仿射变换的加解密分别是: 

对 “security”加密,对 “vlxijh”解密。

解:(1)对 “security”加密:

所以,“security”对应的密文是 “rxjfkzyh”。

(2)对 “vlxijh”解密:

所以,“vlxijh”对应的明文是 “agency”。

2.多表代换密码

多表代换密码首先将明文M 分为由n个字母构成的分组M1,M2,...Mj,对每个分组Mi的加密为:

其中(A,B)是密钥,A是 n×n的可逆矩阵,满足gcd( |A|,N)=1(|A|是行列式).              

对密文分组Ci的解密为:

【例题2】设n=3,N26 ,

明文为 YOUR PIN NO IS FOUR ONE TWO SIX。

(1)加密过程:

将明文分成3个字母组成的分组 “YOU RPI NNO ISF OUR ONE TWO SIX”,如下所示:

由于矩阵B为0,所以

密文为 “WGI FGJ TMR LHH XTH WBX ZPS BRB”。

(2)解密过程:

解密时,先求出

再求

得明文为“YOU RPI NNO ISF OUR ONE TWO SIX”。

维吉尼亚密码

  • 简介:维吉尼亚密码是一种多表代换密码,由法国密码学家维吉尼亚于 1586 年提出。它克服了单表代换密码容易被频率分析破解的缺点,安全性相对较高。维吉尼亚密码的核心在于使用一个关键词作为密钥,并通过一张特殊的表格来进行加密。
  • 特点:通过使用多个凯撒密码的组合,隐藏了明文中字符的频率分布规律,增加了密码分析的难度。但如果密钥字较短,且明文较长,仍可能通过统计分析等方法被破解。
  • 加密原理
    • 首先有一个密钥,将密钥重复扩展,使其长度与明文相同。
    • 然后,根据密钥字中每个字符对应的字母在26行字母表(这张表格由26行字母表组成,每一行都是上一行向左偏移一位得到的)中的位置,在表格中找到对应的密文。

下面是26行的维吉尼亚密码表:第一行为明文字符,第一列为密钥字符,中间为加密(移位)后的结果。

【例题3】明文为 “SECURITY”,密钥为 “CODE”,

解:明文SECURITY(对应为18 4 2 20 17 8 19 24)一共有8个字符,

因此重复后的密钥为C O D E C O D E(变换为移位的位数为2 14 3 4 2 14 3 4)

S(明文)+C(密钥)=U(密文)即(18 + 2) % 26 = 20

E(明文)+O(密钥)=S(密文)

C(明文)+D(密钥)=F(密文)

U(明文)+E(密钥)=Y(密文)

依次类推,可以得到最终密文为:USFYTWWC

  • 解密原理
    • 与加密过程相反,根据密钥中每个字符对应的字母在字母表中的位置,对密文中相应位置的字符进行逆向的凯撒密码变换。
    • 也可以用密文对应的数字减去密钥对应位置的数字,若结果为负数则加上 26,最后对 26 取模。例如,对于第一个字符,(20 - 2) % 26 = 18

四、置换密码

栅栏密码

  • 简介:栅栏密码是一种简单的置换密码,它将明文按照一定的规则重新排列,从而达到加密的目的。
  • 特点:加密方法简单,容易实现。但其安全性较低,因为只是对字符的位置进行了置换,字符本身没有改变,攻击者可以通过分析字符的频率分布等特征来尝试破解。
  • 加密原理:将明文按照一定的字数分成若干行(栏数),然后将每行的字符按照特定的顺序重新排列(按列读取),形成密文。

【例题4】明文 “SECURITY” ,栏数为2

解:

(1)加密

由于栏数为2,即把明文SECURITY分成上下两行交替放置字符。

第一行:S E C U

第二行:R I T Y

加密后的密文就是将两行字符从上到下,从左到右依次连接起来,

密文S->R->E->I->C->T->U->Y,即SREICTUY

  • 解密原理:先根据已知的分组长度,将密文按照相反的顺序重新分组,再将每组的字符按照原来的顺序还原,即可得到明文。

(2)解密:

第一行:S C R T
第二行:E U I Y

明文为S->E->C->U->R->I->T->Y,即SECURITY

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2327113.html

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

相关文章

KingbaseES物理备份还原之备份还原

此篇续接上一篇<<KingbaseES物理备份还原之物理备份>>,上一篇写物理备份相关操作,此篇写备份还原的具体操作步骤. KingbaseES版本:V009R004C011B003 一.执行最新物理备份还原 --停止数据库服务,并创建物理备份还原测试目录 [V9R4C11B3192-168-198-198 V8]$ sys_ct…

jdk21新特性详解使用总结

jdk21新特性详解总结 1.StringBuilder和StringBuffer新增了一个repeat方法 /*** Java 21的StringBuilder和StringBuffer新增了一个repeat方法*/public static void repeatStr(){var sbnew StringBuilder().repeat("*",10);System.out.println(sb);}运行结果如下&…

【实用技巧】电脑重装后的Office下载和设置

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言下载设置总结互动致谢参考目录导航 前言 在数字化办公时代&#xff0c;Windows和…

206. 反转链表 92. 反转链表 II 25. K 个一组翻转链表

leetcode Hot 100系列 文章目录 一、翻转链表二、反转链表 II三、K 个一组翻转链表总结 一、翻转链表 建立pre为空&#xff0c;建立cur为head&#xff0c;开始循环&#xff1a;先保存cur的next的值&#xff0c;再将cur的next置为pre&#xff0c;将pre前进到cur的位置&#xf…

离线语音识别 ( 小语种国家都支持)可定制词组

1产品介绍 离线语音模组采用神经网络算法&#xff0c;支持语音识别、自学习等功能。运用此模组将 AI 技 术赋能产品&#xff0c;升级改造出语音操控的智能硬件 ( 例如风扇、台灯、空调、马桶、按摩椅、运 动相机、行车记录仪等 ) 。支持全球多种语言识别&#xff0c;如中文…

网络华为HCIA+HCIP 策略路由,双点双向

目录 路由策略&#xff0c;策略路由 策略路由优势 策略路由分类 接口策略路由 双点双向 双点双向路由引入特点: 联系 路由回灌和环路问题 路由策略&#xff0c;策略路由 路由策略:是对路由条目进行控制&#xff0c;通过控制路由条目影响报文的转发路径&#xff0c;即路…

【TI MSPM0】ADC DAC学习

一、样例展示 通过ADC0触发单次采样&#xff0c;如果采样结果大于0.5倍的VDD&#xff0c;就点亮LED 否则熄灭LED 编译加载运行这个历程&#xff0c;提供一个电压到A0_2引脚上,电压范围在0-VCC之间同时观察LED1.在上电后&#xff0c;默认将ADC配置到正确的引脚模式&#xff0c;…

Cesium系列:从入门到实践,打造属于你的3D地球应用

一、Cesium简介 CesiumJS 是一个开源的 JavaScript 库&#xff0c;它能够帮助开发者创建出具有卓越性能、高精度、出色视觉质量和易用性的世界级 3D 地球仪和地图。无论是在航空航天领域&#xff0c;用于模拟飞行路径和展示卫星数据&#xff1b;还是在智能城市中&#xff0c;用…

Linux系统程序设计:从入门到高级Day01

知识点1 【系统调用】 系统调用的概述 系统调用&#xff1a;内核 提供给 用户 可以 操作内核 的一组函数接口 关系&#xff1a;用户 借助 系统调用 操作内核 进程的空间分为&#xff1a;内核空间 和 用户空间 用户一般都是在用户空间操作的&#xff0c;但是有的时候用户需要…

openEuler24.03 LTS下安装HBase集群

前提条件 安装好Hadoop完全分布式集群&#xff0c;可参考&#xff1a;openEuler24.03 LTS下安装Hadoop3完全分布式 安装好ZooKeeper集群&#xff0c;可参考&#xff1a;openEuler24.03 LTS下安装ZooKeeper集群 HBase集群规划 node2node3node4MasterBackup MasterRegionServ…

关于testng.xml无法找到类的问题

问题&#xff1a;testng.xml添加测试类的时候飘红 解决办法&#xff1a; 1.试图通过自动生成testng.xml插件去解决&#xff0c;感觉也不是这个问题&#xff0c;没有尝试&#xff1b; 2.以为是创建包的方式不对&#xff0c;重新删除后新建--还是找不到 想新建类的时候发现从m…

数据结构:探秘AVL树

本节重点 理解AVL树的概念掌握AVL树正确的插入方法利用_parent指针正确更新平衡因子掌握并理解四种旋转方式&#xff1a;左单旋&#xff0c;右单旋&#xff0c;左右双旋&#xff0c;右左双旋 一、AVL树的概念 AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis&…

Linux 入门:基础开发工具(上)vim,gcc/g++,make/makefile

目录 一.软件包管理器 一&#xff09;.软件包 二&#xff09;.安装软件 三&#xff09;.删除软件 二.编辑器vim 一&#xff09;.vim的基本介绍 1.正常/普通/命令模式(Normal mode) 2.插入模式(Insert mode) 3.底行模式(last line mode) 二&#xff09;.vim的基本操作 …

5、无线通信基站的FPGA实现架构

基站&#xff08;Base Station&#xff0c;BS&#xff09;&#xff0c;也称为公用移动通信基站&#xff0c;是无线电台站的一种形式&#xff0c;具体则指在一定的无线电覆盖区中&#xff0c;通过移动通信交换中心&#xff0c;与移动电话终端之间的信息传递的无线电收发信电台。…

Linux2 CD LL hostnamectl type mkdir dudo

查看主机名信息 设置静态主机名 同时配置静态、瞬时主机名 下载Vmware tools https://blog.csdn.net/qq_34638161/article/details/102779721 mkdir创建目录 问题&#xff1a;为什么在root目录下 看不到 /var /usr那些文件夹

Docker容器部署Java项目的自动化脚本(Shell编写)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Docker容器部署Java项目的自动化脚本&#x…

STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出

目录 前言 输出时的GPIO控制部分 标准库是如何操作寄存器完成GPIO驱动的初始化的&#xff1f; 问题1&#xff1a;如何掌握GPIO的编程细节——跟寄存器如何打交道 问题2&#xff1a;哪些寄存器&#xff0c;去哪里找呢&#xff1f; 问题三&#xff0c;寄存器的含义&#xff…

UniApp集成极光推送详细教程

最近项目要集成推送服务&#xff0c;选型极光推送&#xff0c;记录一下开发过程。 1、极光官网注册登录 1.1选择极光推送产品&#xff0c;新建应用 1.2在下一步中选择Android/IOS的消息推送服务 1.3产品设置中输入应用包名&#xff08;一经输入后不可更改&#xff0c;一定要正…

AI战略群与星际之门:软银AI投资版图计划深度解析

一、星际之门:万亿美元级 AI 基础设施革命 1.1 项目背景与战略定位 在 AI 技术迅猛发展的今天,算力已成为推动其前进的核心动力。软银联合 OpenAI、甲骨文、英伟达、微软、arm推出的 “星际之门”(Stargate)计划,无疑是 AI 领域的一颗重磅炸弹。作为 AI 领域史上最大单笔…

系统思考与时间管理

时间管理的真正秘诀&#xff1a;主动浪费时间&#xff1f; 巴菲特的私人飞机驾驶员觉得自己不够成功&#xff0c;于是向巴菲特请教应该怎么做。巴菲特让他列出了自己人生中最想实现的25个目标&#xff0c;并按重要程度排序&#xff0c;接着安排时间专注做前五件最重要的事情。…