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

简介: 本实验带您实现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

相关文章
|
1月前
|
API Python
有效电子邮件地址是怎么样的?如何用代码筛查
有效电子邮件地址是怎么样的?如何用代码筛查
|
7月前
|
数据安全/隐私保护 Python
BUUCTF 传统知识+古典密码 1
BUUCTF 传统知识+古典密码 1
177 0
|
5月前
|
数据库
生信分析|基因组倍型鉴定
生信分析|基因组倍型鉴定
52 0
|
7月前
|
人工智能 算法 测试技术
古典密码体制的统计分析——Playfair密码
本实验带您体验古典密码体制的统计分析——Playfair密码。
207 0
|
8月前
|
数据可视化 数据处理 UED
40000+条考研信息数据可视化(学校、专业分数分布)
40000+条考研信息数据可视化(学校、专业分数分布)
|
9月前
|
算法 安全 网络安全
网络安全实验三 古典密码
网络安全实验三 古典密码
111 0
|
10月前
ChatGPT结合Excel公式办公 —— ChatGPT统计富豪信息
ChatGPT结合Excel公式办公 —— ChatGPT统计富豪信息
|
11月前
|
机器学习/深度学习 数据可视化 数据挖掘
跟着Nature Genetics学数据分析:nucmer+lastz+svum流程全基因组比对鉴定CNV
跟着Nature Genetics学数据分析:nucmer+lastz+svum流程全基因组比对鉴定CNV
|
机器学习/深度学习
【阿旭机器学习实战】【24】信用卡用户流失预测实战
【阿旭机器学习实战】【24】信用卡用户流失预测实战
【阿旭机器学习实战】【24】信用卡用户流失预测实战
|
数据挖掘
2022国赛C题古代玻璃制品的成分分析与鉴别思路分析
2022国赛C题古代玻璃制品的成分分析与鉴别思路分析
15034 9