穷尽密钥搜索法c语言代码,古典密码维吉尼亚密码

本文介绍了古典密码学中的维吉尼亚密码,这是一种由布莱瑟·维吉尼亚在16世纪发明的多表密码,通过密钥决定替换规则来对抗字频统计。文章详细阐述了维吉尼亚密码的加密和解密过程,并提到其在历史上的演变和应用。读者可以通过理解此原理,编写高级语言实现加密解密程序。
摘要由CSDN通过智能技术生成

原标题:古典密码维吉尼亚密码

维吉尼亚密码是古典密码中非常具有代表的例子。本实验要求用高级语言编写和调试一个简单的维吉尼亚密码实现及解密程序,通过本实验可以加深理解维吉尼亚密码原理。

人们在单一恺撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。它是由16世纪法国亨利三世王朝的布莱瑟·维吉尼亚发明的。维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。维吉尼亚密码的密钥空间大小为26m,所以即使m的值很小,使用穷尽密钥搜索方法也需要很长的时间。例如,当m=5时,密钥空间大小超过1.1*107,这样的密钥量已经超出了使用手算进行穷尽搜索的能力范围。

维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:

TO BE OR NOT TO BE THAT IS THE QUESTION

当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:

密钥:RELAT IONSR ELATI ONSRE LATIO NSREL

明文:TOBEO RNOTT OBETH ATIST HEQUE STION

密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY

历史上以维吉尼亚密表为基础又演变出很多种加密方法,其基本元素无非是密表与密钥,并一直沿用到二战以后的初级电子密码机上。

加密流程:

第一步:编号。将A-Z以编号0-25编号;

第二步:选取密钥。举例:wangyuhang;

第三步:明文处理。去掉所有空格;举例:明文为we are discovered save yourself;处理后:wearediscoveredsaveyourself;

第四步:密钥处理 将密钥重复排列;处理后:wangyuhangwangyuhangwangyuh;

第五步:加密 举例:明文第一个字母W编码为22,密钥第一个字母为W编码为22;22+22=44,因为44>26,所以44-26=18;18对应字母为Q,故将W加密为Q;明文第二个字母E编码为4,密钥第二个字母为A编码为0;4+0=4,4对应字母为E,故将E加密为E;以此类推;

第六步:输出密文 举例:senxadvyyoikneqywvrekueyals

解密流程:

第一步:编号。将A-Z以编号0-25编号;

第二步:获取密钥。举例:wangyuhang;

第三步:密文处理。去掉所有空格;处理后:senxadvyyoikneqywvrekueyals;

第四步:密钥处理。将密钥重复排列;处理后:wangyuhangwangyuhangwangyuh;

第五步:解密。举例:密文第一个字母Q编码为18,密钥第一个字母为W编码为22;18-22=-4,因为-4<0,所以-4+26=22;22对应字母为W,故将Q解密为W;密文第二个字母E编码为4,密钥第二个字母为A编码为0;4-0=4,4对应字母为E,故将E解密为E;以此类推;

第六步:明文处理 根据相关语言释读,按照正确的语言格式整理明文; 举例:we are discovered save yourself。

c5e6820d549ed1383d1efd9d04469a06.png

运行VC++6.0

2a95a993d2ec0d5736388e85dedb31f3.png

打开d:\tools\BUPT1004B中的BUPT1004B.cpp工程文件

78b6e682abf0cc36ce14213dee671cd1.png

查看代码并调试运行

7999e2d6f343b23ec423ce901d41f30d.png

执行生成的BUPT1004B.exe文件

5a058e24f4ce32e3af78f3b16a731f51.png

运行成功后的截图

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值