古典密码体制的统计分析—— Vigenere密码

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 本实验带您实现Vigenere密码的加密和解密算法。

古典密码体制的统计分析—— Vigenere密码

1. 创建资源

开始实验之前,您需要先创建实验相关资源。

在实验室页面,单击创建资源。

(可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、子用户信息等)。

说明:资源创建过程需要3~5分钟视资源不同开通时间有所差异,ACK等资源开通时间较长。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等。

实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。

资源创建成功,可在左侧的资源卡片中查看相关资源信息以及RAM子账号信息

2. 背景知识

背景知识

Vigenere 密码是提高单字母表密码安全性的思路之一。

加密

以 FUDAN 为关键词,明文为 THEBASICOFCRYPTOGRAPHY (The Basic of Cryptography),举例说明 Vigenere 密码的加密过程:

构建密钥

密钥与明文等长,循环重复关键词。

明文:THEBASICOFCRYPTOGRAPHY

密钥:FUDANFUDANFUDANFUDANFU

对照字母表编写密文

根据密钥字母,在字母表中找到对应行;

根据明文字母,在字母表中找到对应列;

由已知明文 T 和密钥 F 得出密文 Y

解密

解密过程与加密过程相反。

算法实现

若用 0-25 的整数与 A-Z 的 26 个字母一一对应,P 为明文,C 为密文,K 为密钥,那么可以将加密算法和解密算法写成:

例如已知明文 T,密钥 F,如果 T 为19,F 为5,密文即为 (19+5) mod 26 = 24,对应字母为 Y,所以密文为 Y。(提示:可以借助ASCII码在数字和字母之间转换,也可以发挥自己的想法用字典、列表或数组存储相关关系)

参考资料

Vigenère cipher

Kasiski examination

Index of coincidence

维吉尼亚密码

3. 实验内容

实验内容

给定密钥,用 C/C++/Python 实现 Vigenere 密码的加密和解密算法;(提供测试用例帮助同学们检测代码的准确性,原则上使用的编程语言不限,要求工作量相近)

加密测试用例(明文为THEBASICOFCRYPTOGRAPHY,密钥为SECURITY)

输入:THEBASICOFCRYPTOGRAPHY SECURITY

输出:LLGVRABAGJELPXMMYVCJYG

解密测试用例(密文为YBHBNXCFOSHLBPGTAUACMS,密钥为FUDAN)

输入:YBHBNXCFOSHLBPGTAUACMS FUDAN

输出:THEBASICOFCRYPTOGRAPHY

解密文档 lab1-1_input.txt (提示:密钥为 CRYPTOGRAPHY),输出的结果保存在lab1-1_output.txt 中,并将其中包含的信息写入报告的实验结果中。请同学们自行创建文件并将其中包含的信息写入报告的实验结果中

4. 拓展实验

拓展实验

分别实现使用 Kasiski 测试 和 Friedman 测试破解密码长度的算法。

有兴趣的同学可以完成,非强制性要求,且不计分。

破解 Vigenere 密码

破译 Vigenere 密码虽然不能直接使用频率分析,但由于密钥循环反复,当得知密钥长度时,可利用类似于 Caesar 密码的方法破解。 密钥长度的破解可通过以下两种方法: Kasiski 测试 & Friedman 测试。

Kasiski 测试

原理是常用单词或高频出现的单词片段,可能被同样的密钥字母进行加密。当密文足够长时,包含该信息更多,更有可能推断出密钥长度。例如:

密钥: ABCDABCDABCDABCDABCDABCDABCD

明文: CRYPTOISSHORTFORCRYPTOGRAPHY

密文: CSASTPKVSIQUTGQUCSASTPIUAQJB

相隔 16 个字符出现相同字符片段,密钥有可能是 16 的约数(16,8,4,2)。当密文长度足够长时,还能找到其他的重复片段,取其公约数,即可确定密钥长度。

Friedman 测试

定义重合指数来描述字母在频率分布上的不匀性,从而破译密码。

其中,𝑐是指字母表的长度(英语中为 26),𝑁指密文文本的长度,𝑛1到𝑛𝑐到是指密文的字母频数, 为整数。得到重合指数 IC 后,可用以下公式估计密钥长度:

其中,𝐿是密钥长度,𝑘𝑝为目标语言中两个任意字母相同的概率(在英文中𝑘𝑝约为 0.655),

𝑘𝑟 为字母表中出现相同字母的概率(在英文字母表中,𝑘𝑟 =1/26=0.0385)

已知密钥长度后,可按照密钥长度重新改写密文,对于被密钥中同一个位置加密的密文,即可单独做类似于 Caesar 密码的字母频率分析破译,从而推断出密钥中的每个字母。

实验链接:https://developer.aliyun.com/adc/scenario/ac09c818ce5a4d7794378c02904a531e

相关文章
|
数据安全/隐私保护 Python
BUUCTF 传统知识+古典密码 1
BUUCTF 传统知识+古典密码 1
461 0
|
机器学习/深度学习 存储 数据采集
数据分析案例-基于多元线性回归算法预测学生期末成绩
数据分析案例-基于多元线性回归算法预测学生期末成绩
1422 0
数据分析案例-基于多元线性回归算法预测学生期末成绩
|
8月前
|
数据可视化 数据挖掘
数据代码分享|R语言主成分(PCA)、主轴因子分析(PA)员工满意度调查数据可视化
数据代码分享|R语言主成分(PCA)、主轴因子分析(PA)员工满意度调查数据可视化
|
数据安全/隐私保护
[MRCTF2020]古典密码知多少 1
[MRCTF2020]古典密码知多少 1
284 0
|
人工智能 算法 测试技术
古典密码体制的统计分析——Playfair密码
本实验带您体验古典密码体制的统计分析——Playfair密码。
|
算法 安全 网络安全
网络安全实验三 古典密码
网络安全实验三 古典密码
180 0
|
算法 数据安全/隐私保护 信息无障碍
密码学·编码类密码·CTF常见考察密码2
11.摩尔斯电码 摩尔斯电码(又译为摩斯电码,Morse code)是一种时通时断的信号代码,这种信号代码通过不同的排列顺序来表达不同的英文字母、数字和标点符号等 密码表:
273 0
密码学·编码类密码·CTF常见考察密码2
|
存储 编解码 数据安全/隐私保护
密码学·编码类密码·CTF常见考察密码1
1.ASCII编码 ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是一套基于拉丁字母的字符编码,共收录了 128 个字符,用一个字节就可以存储,它等同于国际标准 ISO/IEC 646。 ASCII编码转换一览表
184 0
密码学·编码类密码·CTF常见考察密码1
|
数据挖掘
2022国赛C题古代玻璃制品的成分分析与鉴别思路分析
2022国赛C题古代玻璃制品的成分分析与鉴别思路分析
15231 9
|
数据安全/隐私保护
知识盲区 | 那些年,你不太会用的Excel “摩斯密码”!
知识盲区 | 那些年,你不太会用的Excel “摩斯密码”!
知识盲区 | 那些年,你不太会用的Excel “摩斯密码”!