密码学 | 维吉尼亚密码(Vigener)
1 单字母替换(前备知识)
在大量英文文献以及普通英文文章中,研究者发现这种文章中单词出现的频率符合一定的规律。如上表所示,例如a出现的频率在8.2%左右,e出现的频率最高,在12.4%左右。y、z频率最低,在0.1%左右。
1 以这些统计规律计算各个字母出现概率的平方和:
平方和基本稳定在0.065。计算过程如下:
2 若此时我们并不知道各个字母所拥有的频率,使用均匀分布的方法,假设所有字母出现的频率均为1/26,则所得到的概率的平方和为:
以如上的两个值0.065和0.038来进行维吉尼亚密码的解密。
2 维吉尼亚密码是啥
首先要确定一个长度为n的密钥,使用其进行循环加密明文,具体方法为用明文中的单字符和密钥中的各个字符进行对应相加得到密文。在解密时,对应相减得到明文。
此时很容易得知相同明文在不同密钥的加密下,得到的密文是不同的。
3 想办法得到密钥
- Kasiski 测试法(基于密文)
面对一连串未知含义的密文时,先找到总是重复出现的有序序列(多找几对),为之后合理推算密钥长度做基础。
- 重合指数法(基于密文)
先猜测可能的密钥长度n,在讲整体密文分成n组,因为每间隔n个单位长度的字母总是使用同一个单位密钥进行加密。统计每个分组的所统计的各个字母频率的平方和。例子如下:
可以发现,猜测密钥长度为5,所计算出的5个分组的平方和基础处于0.065的上下界内,至于是否接受该结果可以使用假设检验的知识进行判断;若猜测错误的话,子串的重合指数极大可能在0.038附近,在此例中,我们认为密钥长度为5在很大程度上是可能的。
之后可加密的字母共有26种,那么看解密后的哪种明文有意义即可,或者再次使用统计学上的规律:
只有正确解密到的明文才能符合最终0.065的重合指数,而其他的都是随机值分布在0.038附近。
- 暴力(使用选择明文攻击)
直接用一长串a送入输入端,观察根据密钥得到的密文,进而反推密钥。
密码学 | 维吉尼亚密码(Vigener)相关推荐
- 密码学——维吉尼亚密码
文章目录 前言 一.维吉尼亚密码简介 二.维吉尼亚算法 1.加密算法 2.解密算法 3.主函数 总结 前言 本内容为博主学习维吉尼亚密码的笔记,如有错误,烦请指正. 一.维吉尼亚密码简介 维吉尼亚密码 ...
- 密码学之维吉尼亚密码
密码学浅谈 密码学五元组:明文(P),密文(C),密钥(K),加密算法(E),解密算法(D),S={P,C,K,E,D} 密码学的信息安全系统目标:C,I,A C(Confidentiality):机 ...
- 维吉尼亚密码和一次性密码本_密码学中的一次性密码
维吉尼亚密码和一次性密码本 The One-time Pad cipher is almost similar to the Vernam cipher, as, like the vernam ci ...
- 实验吧-密码学-杯酒人生(特殊凯撒--维吉尼亚密码)(凯撒加解密脚本、维吉尼亚密码加解密脚本)...
题目: 使用古典密码 一喵星人要想喵星发送一段不知道干什么用的密码"BLOCKCIPHERDESIGNPRINCIPLE", 但是它忘记了密钥是什么, 手头(爪头)只有它自己加密过 ...
- 密码学笔记——维吉尼亚密码
维吉尼亚密码 一.简介 维吉尼亚密码是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式. 二.加密算法 直接拿例子来说,比如我要加密一段明文 明文:THISISTO ...
- 密码学(二):古典密码之维吉尼亚密码的破解
维吉尼亚密码的破解 一.引言 上一章我们介绍了维吉尼亚密码的原理,是通过移位替换的加密方法进行加密,但是因为概率论的出现这种简单的移位或替换就容易破解了,其原理很简单,英文中字母出现的频率是不一样 ...
- 【密码学原理与实践】(四)维吉尼亚密码 符java代码实现
维吉尼亚密码(Vigenere Cipher) 转载请著明出处 无论是移位密码还是代换密码,一旦秘钥被选定,则每个字母对应的数字都被加密变换成对应的唯一数字.我们称这种为单表代换密码,而本篇讲的是一种 ...
- 几分钟学会密码学(一)——维吉尼亚密码
1.维吉尼亚密码加密原理: 26个英文字母(a-z)对应26个个自然数(0-25),也就是a对应0,b对应1,c对应2,以此类推. 2.维吉尼亚密码加密方法: 假设明文信息是abcd,密码是ab,那么 ...
- python 古典密码第一弹(凯撒密码,Playfair密码,维吉尼亚密码)
各位白嫖-漂亮大哥哥姐姐们好,在下菜鸡一枚,主要想在这和大家一起探讨学习之道,一起愉快的学习密码学基础.总所周知,密码学学的好,头发掉的少... 直接进入正题,今天我就主要讲三个密码,而且都是古典密码 ...
最新文章
- Angular应用中tsconfig.json文件配置说明及配置全局路径映射
- git在公司内部的使用实践(转)
- panel内嵌程序窗体
- 利用MS17-010渗透win7(64位)
- apache camel_带有调试器的Apache Camel Eclipse工具
- 二次优化大招(由泰勒公式推出最值条件)
- JSP+Javabean+Servlet实现用户注册
- php服务器怎么设置cookie,php服务器如何清除浏览器cookie
- 监控mysql主从同步状态是否异常
- python方法调用名字不一样怎么办_python如何通过实例方法名字调用方法
- [论文]著名会议和期刊
- 《Adobe After Effects CS6中文版经典教程》——2.9 渲染合成图像
- 操作系统、体系结构和传奇船长的泰坦级超级旗舰
- Android成长之路-音乐播放器的实现
- JS pos机- V0.2
- 泛泰A880 Recovery
- 利用vbox安装服务器操作系统,在Linux服务器上使用Vbox安装虚拟机(示例代码)
- 2019年阿里云的最新优惠活动
- 芋道 Spring Boot Redis 入门
- Android ImageButton(图片按钮)