C++实现经典密码学:Vigenere加密与解密
需积分: 16 111 浏览量
更新于2024-09-11
1
收藏 92KB DOC 举报
古典密码学是一门历史悠久的学科,主要研究在没有现代计算机技术支持下的加密和解密技术。C++语言作为高级编程语言,被用于实现这些传统的加密算法,如仿射密码、希尔密码、维吉尼亚密码等。本实验的重点是多表古典加密方法,特别是Vigenere体制,这是一种基于字母表替换和循环移位的加密技术。
实验一的目标是让学习者掌握多表古典加密方法的原理和实践应用。首先,实验要求学生熟悉高级语言(这里指C++)并能编写实现相应的加密和解密算法。Vigenere体制的特点在于使用两个字符串,一个作为固定密钥(如'key'),另一个是可变密钥(由用户输入的明文和固定密钥字符重复组成),对明文字母进行加密。
加密函数`encryption`的核心部分如下:
1. 使用`number`函数将字符转换为对应的数字,通过查找字符在预设的字母表中的位置。
2. 用户输入明文(`m`)和密钥(`k`),获取它们的长度。
3. 将字符串转换为字符数组,并用密钥生成新的密钥串`t`。这里使用了循环移位,每加密一个字符,密钥向后移动一位,取模klen确保密钥长度不会超过固定值。
4. 最后,通过两个字符在字母表中的位置相乘(注意使用了`v`数组的嵌套查找),将明文字符替换为加密后的字符,输出加密结果。
解密函数`disencryption`的过程与加密类似,但解密时需要反向操作,即将加密后的密文字符对应回原始字母表的位置,通过相同的密钥循环移位恢复明文。用户输入密文和密钥后,根据加密过程逆向操作,解密出原始消息。
Vigenere密码之所以被称为“古典密码”,是因为它在历史上的确具有一定的安全性,但面对现代密码学的挑战,比如频率分析和凯撒密码的破解技巧,它的强度并不足以抵御现代的密码分析手段。然而,这些古典密码算法的学习和实践,对于理解密码学的基本原理和技术发展历史有着重要的价值。通过这个实验,学习者可以加深对多表加密、字符替换和移位加密的理解,并且能够运用高级语言实现这些经典算法。
2019-03-14 上传
2018-10-08 上传
2018-01-22 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2012-10-29 上传
2012-03-12 上传
2022-06-26 上传
luluni1
- 粉丝: 0
- 资源: 1
最新资源
- 后端
- pyalgs:软件包pyalgs使用Python在Robert Sedgwick的算法中实现算法
- gDoomsday-开源
- maximize-all-windows:Firefox插件,用于最大化所有浏览器窗口
- PHPCMS的企业黄页模块(技术宅社区修改版) v20130628
- InspectIcon.r7s2c1z9ui.gaSVxHJ
- 简单线性回归
- Mopidy是用Python编写的可扩展音乐服务器-Python开发
- 参考资料-基于RTL8019AS的单片机TCPIP网络通信.zip
- dag:DAG实施中
- Script Menu-crx插件
- HackBulgariaJavaCourseApplication:哈克保加利亚Java课程应用程序的任务
- 适用于Python程序的采样探查器-Python开发
- 参考资料-基于rs485总线的智能家居系统.zip
- 各个版本的oracle dataaccess
- milestone-project-02:这是一个使用HTML 5,CSS和JS创建的旅行网站,我必须在其中添加Google API,Sky Scanner API和电子邮件