古典密码——代替密码
代替密码
什么是代替密码?
首先构造一个或多个密文字母表,然后用密文字母表中的字母或字母组来代替明文字母或字母组,各字母或字母组的相对位置不变,但其自身发生改变。
代替密码又分为单表代替密码、多表代替密码和多名代替密码。
一、单表代替密码
单表代替密码又称简单代替密码,它只使用一个密文字母表,并且由密文字母表中的一个字母代替明文字母表中的一个字母。
所以说单表代替建立了由密文到明文的一对一的映射关系。
下面介绍集中典型的简单代替密码。
1.加法密码
加法密码的映射函数为:
其中,k是满足0<k<n的正整数
著名的加法密码是古罗马的凯撒大帝使用过的一种密码,其密文字母表就是明文字母表循环右移3位(k=3)后得到的字母表,如:
明文CHINA转换成密文后就是FKLQD
缺点:
- 明文空间 = 密文空间
- 明文语言集已知(用于英文字母)且易于识别
- 结构简单,单字母代替
- 不能改变字母的统计特性
2、乘法密码
乘法密码是通过对字母等间隔抽取以获得密文,其加密和解密可分别表示为:
其中,m,c,k是满足0≤m,c,k≤25且gcd(k,n) = 1即k和n互素
3、仿射密码
仿射密码是加法密码和乘法密码的结合,映射函数为:
其中,要求(k1,n)= 1,0≤k0<n,且不允许同时有k1 = 1和k0 = 0
4、密钥词语代替密码
选用一个词语作为密钥编制密码的方法在置换密码中曾得到应用。这一方法同样可以用于代替密码中。首先随机选择一个词语作为密钥,去掉重复字母,把结果作为矩阵的第一行。其次在明文字母表中矩阵第二行开始,将剩余字母依次写入矩阵的其余行。最后按照某一顺序从矩阵中取出字母构成密文字母表。例如:
密钥: H O N G Y E
矩阵: H O N G Y EA B C D F IJ K L M P QR S T U V WX Z
A = {A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}
B = {H,A,J,R,X,O,B,K,S,Z,N,C,L,T,G,D,M,U,Y,F,P,V,E,I,Q,W}
明文: C H I N A
密文: J K S T H
密文字母表由密钥词语、矩阵大小和写入选出顺序共同确定。
二、多表代替密码
由于单表代替密码只是用一个密文字母表,很容易破解。提高密码强度的一个方法是采用多个密文字母表。
最典型的多表代替密码是Vigenre密码。
维吉尼亚密码使用26个密文字母表,将26个密文字母表排在一起成为Vigenre方阵,如下图所示:
维吉尼亚密码的规则是用明文字母在方阵中的列和密钥字母在方阵中的行的交点处的字母来代替该明文字母。例如,明文字母为p,密钥字母为y,就用交点处的n来代替字母p。
维吉尼亚密码的解密就是利用维吉尼亚方阵进行反替换。例如,密文J,密钥是X,首先根据密钥J找到密文字母表,再查找密文X所在的列,该列与明文字母表的交点就是对应的明文O
三、多名代替密码
为了抵抗频率分析攻击,希望密文中不残留明文字母的频率痕迹。一种明显的方法是设法将密文字母的频率分布拉平。
频率分析攻击对单表代替密码最有效,它利用了字母或字符出现的频率来进行攻击。下图是字母的频率统计图:
与简单代替密码类似,只是映射是一对多的,每个明文字母可以加密成多个密文字母。
例如, A可能对应于5、13、25
B可能对应于7、9、31、42
• 当对字母的赋值个数与字母出现频率成比例时。这是因为密文符号的相关分布会近似于平的,可以挫败频率分析。
• 然而,若明文字母的其它统计信息在密文中仍很明显时,那么同音代替密码仍然是可破译的。
—— 摘自百度百科
古典密码——代替密码相关推荐
- 密码学基础(二)单表---置换密码 凯撒密码 棋盘密码 乘法密码 仿射密码 多表---vigenere方阵
1古典密码 (1)置换密码 明文字母重新排列,字母本身不变,但是位置发生变化(倒序或者按照按照数组排列后以行或列重新组合) (2)代替密码 分为单表代替密码和多表代替密码 单表代替密码中代表性的 凯撒 ...
- linux 正则 设置密码复杂度,Ubuntu修改密码及密码复杂度策略设置方法
一.修改密码 1.修改普通用户密码 passwd 先输入当前密码确认,然后输入新的密码修改 2.修改root用户密码 sudo passwd root 默认root用户被禁止登录,如果需要解除限制,修 ...
- shell批量创建和删除10个系统帐号密码(密码为随机10位字符串)
1.添加10个用户和密码,并把账号和密码保存到指定的文件里 # vim create_user.sh #/bin/bash # for jiangjj in {1..10}; do if id use ...
- php 挂马 密码123456,admin密码-常用密码加密md5值,123456,admin,admin888
一 : 常用密码加密md5值,123456,admin,admin888 123456这个经md5算法加密之后是多少? 16位:49ba59abbe56e057 32位:e10adc3949ba59a ...
- 登陆工行网上银行报60058017错误及输入正确网银密码提示密码不正确
文章编号: 000007 - 最后修改:2010年07月28日 - 撰写人: Lander Zhang 适合项目: 通用 标题: 登陆工行网上银行报60058017错误及输入正确网银密码提示密码不正 ...
- 凯撒密码pythin密码_凯撒密码术
凯撒密码pythin密码 Caesar cipher is one of the well-known techniques used for encrypting the data. Althoug ...
- laravel 自带的用户登录视图路径_Laravel实现找回密码及密码重置,详细操作
Laravel实现找回密码及密码重置功能在php实现与在这里实现会有什么区别呢,下面我们来看看Laravel中的例子,在php中就不介绍了大家都懂的. 忘记密码是应用中常见的场景之一,Laravel5 ...
- 机器人门禁控制盒怎么接线方法_RFID门禁系统原理、初始密码、密码修改方法...
现在,科技进步的速度越来越快,如今就连门锁都使用上了高科技,不知道大家有没有听说过RFID门禁系统,所谓RFID就是Radio Frequency Identification的缩写,即射频识别,可能 ...
- java 获取密码框密码,获得Windows下的密码框密码--编程学习网
获得Windows下的密码框密码,似乎是很多人感兴趣的话题,CSDN上问这类问题的人不计其数--这样看来,老罗也不能免俗啦,今天就让我跟大家探讨一下如何实现这一功能吧.^_^ 我们知道,Windows ...
最新文章
- 基于GAN的图像水印去除器,效果堪比PS高手
- 免高考!2021清华北大保送名单公布,五大学科竞赛260人获保送资格
- Android存储之SQLiteDatbase
- 大数据量下的集合过滤—Bloom Filter
- 学习笔记——Numpy基本操作(二)
- ASP.NET 之 MVC框架及搭建
- pat 乙级 1014 福尔摩斯的约会 (C++)
- 回顾InfoGAN与隐变量
- 九江学院计算机考研,2017年江西财经大学与九江学院联合培养考研招生事宜的通知...
- 测试压缩ASP.NET中的ViewState
- C语言常用字符ASCII代码表,C语言常用转义字符、ASCII、优先级对照表
- 软件工程 超市库存管理系统 可行性研究-需求分析
- lwip---(六)ARP表
- java 定时为每月10号_Java定时器的cron设置详解Quartz
- Intel RDT特性详解
- 第五届“强网”拟态防御国际精英挑战赛——预选赛入围名单公布!
- 我的AI之路(55)--如何获取kinetics数据集和如何制作自己的kinetics数据集
- Java项目论文+PPT+源码等]基于javaweb的网上订餐管理系统|点餐餐饮餐厅
- go 字符串分割数组
- NYOJ-506 洗澡