当前位置:网站首页>古典密码体制--代换和置换
古典密码体制--代换和置换
2022-06-27 06:01:00 【Da|Sha|Niao】
一、介绍与分类
1.介绍:
古典密码时期一般认为是从古代到19世纪末,这个时期生产力水平低,加密、解密方法主要以纸、笔或简单的器械来实现,在这个时期提出和使用的密码称为古典密码。古典密码是密码学发展的初级阶段。尽管古典密码大都较简单,但由于其安全性差,目前应用很少。研究古典密码的原理,有助于理解、构造和分析近代密码。替代( substitution)和置换(permutation)是古典密码中用到的两种基本处理技巧,它们在现代密码学中也得到了广泛使用。
2.实现技术:
- 代换 将明文字符替换成其他的字母、数字或符号
- 置换 明文的字母相同,但被打乱了
3.分类
- 代换密码
- 单表代换密码
- 多表代换密码
- 置换密码
二、代换密码
1.单表代换密码
(1).移位密码
Ek(P): Ci = (Pi+k) mod n, Dk(P): Pi = (Ci-k) mod n,
其中Ek为加密算法,Pi为明文,Ci为密文,k位密钥,n为字母的个数,Dk为解密算法。
如果是英文字母间的代换,也可以写成以下形式:
Ci = (Pi + k) mod 26 Pi = (Ci - k) mod 26,其中k∈[0,25]
其中凯撒密码Ci = (Pi + 3) mod 26就是一种移位代换密码。
(2).仿射密码
Ek(P) = (aPi + b) mod m
(3).代换密码
指每一个字母都由另一个字母表(从明文字母到密文字母的映射)中的字母加密
破译方法:穷举密钥法、统计分析法(利用语言规律)
2.多表代换密码
(1).维吉尼亚密码
维吉尼亚密码由一些偏移量不同的恺撒密码组成,每一个明文字母的偏移量由一个给定的密钥决定。如明文"abcd"(密钥为plan),则明文字母a的偏移量即为p的位数15。a偏移15位后为p,p即为明文字母对应的密文字母。
Ci = (Pi + ki) mod 26
维吉尼亚密码也看作是依据于一张二维密码表,明文字母和对应的密钥字母分别为行数和列数,在表中找到相应的字母即为密文字母

举例:
明文:howareyou
密钥:mine
| 明文(P) | H | O | W | A | R | E | Y | O | U |
| 密钥(k) | M | I | N | E | M | I | N | E | M |
| 密文(C) | T | W | J | E | D | M | L | S | G |
破译技巧:
- 间隔是密钥长度整数倍的对象代换结果也相同
- 间隔是密钥长度整数倍的位置上的代换是单表代换
(2).一次一密
用随机的非重复的字符集合作为输出密文。一旦使用了变换的输入密文,就不再在任何其他消息中使用这个输入密文(因此是一次性的)。输入密文的长度等于原消息明文的长度。
以下是主要步骤.
1.按递增顺序把每个明文字母作为一个数字,A=0,B=1等等.
2.对输入明文中每一个字母做相同的处理.
3.将明文中的每个字母与密钥中的相应字母相加.
4.如果得到的和大于26,则从中减去26 (mod 26)
5.将和转化为字母,从而得到密文.
三、置换密码
置换密码是⼀种通过⼀定规则改变字符串中字符的顺序从⽽实现加密的密码算法。
与代换密码的区别:
代换密码是将明文字母用不同的密文字母代替,生成的密文中可能有明文未包含的字母,而置换密码是仅仅打乱明文字母的位置和顺序
置换密码有很多种,举例一种:将密文一行一行写在表格中,按一列一列的顺序读取,如明文:howareyouImfinethankyouandyouhaha,则密文:hfuoiawnnaedrtyehoyauonhukaiyhmoa。
| H | O | W | A | R | E | Y | O | U | I | M |
| F | I | N | E | T | H | A | N | K | Y | O |
| U | A | N | D | Y | O | U | H | A | H | A |
边栏推荐
- 汇编语言-王爽 第13章 int指令-笔记
- My opinion on test team construction
- 30个单片机常见问题及解决办法!
- Add widget on qlistwidgetitem
- 427- binary tree (617. merge binary tree, 700. search in binary search tree, 98. verify binary search tree, 530. minimum absolute difference of binary search tree)
- [collection] Introduction to basic knowledge of point cloud and functions of point cloud catalyst software
- Dual position relay dls-34a dc0.5a 220VDC
- KubeSphere 集群配置 NFS 存储解决方案-收藏版
- 线程间等待与唤醒机制、单例模式、阻塞队列、定时器
- Leetcode298 weekly race record
猜你喜欢

My opinion on test team construction

Win 10 如何打开环境变量窗口

开门小例子学习十种用例图

427- binary tree (617. merge binary tree, 700. search in binary search tree, 98. verify binary search tree, 530. minimum absolute difference of binary search tree)

资深【软件测试工程师】学习线路和必备知识点

Codeforces Round #802 (Div. 2)

免费的 SSH 和 Telnet 客户端PuTTY

openresty使用文档

LeetCode 0086.分隔链表

cpu-z中如何查看内存的频率和内存插槽的个数?
随机推荐
Asp. Net core6 websocket simple case
Contents in qlistwidget are not displayed
JVM常用指令
Win 10 如何打开环境变量窗口
MATLAB快速将影像的二维坐标转换为经纬度坐标
Built in functions of spark
JVM类加载机制
How to check the frequency of memory and the number of memory slots in CPU-Z?
Change the status to the corresponding text during MySQL query
Program ape learning Tiktok short video production
JVM overall structure analysis
汇编语言-王爽 第11章 标志寄存器-笔记
力扣 179、最大数
[FPGA] realize the data output of checkerboard horizontal and vertical gray scale diagram based on bt1120 timing design
Spark 之 Projection
Configuration of vscode korofileheader
JVM tuning ideas
IAR Systems全面支持芯驰科技9系列芯片
Get system volume across platforms in unity
LeetCode 0086.分隔链表