实验名称:古典密码算法
实验类型: 设计性实验
学 时:4
适用对象: 信息安全
实验目的
学习常见的古典密码学算法,通过编程实现替代密码算法和置换密码算法,加深对古典密码的了解,为深入学习密码学奠定基础。
二、实验要求
分析替代密码算法和置换密码算法的功能需求,详细设计实现替代密码算法和置换密码算法的数据结构和流程,给出测试用例和测试步骤,得出测试和结论。替代密码算法和置换密码算法的实现程序必须提供加密和解密两个接口:int encrypt()和int decrypt()。当加密或者解密成功时返回CRYPT_OK,失败时返回CRYPT_ERROR。
三、实验原理
古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。
四、实验过程
1、移位密码
(1)代码:
#include void main () { int k ; char m; int n; char c; char p; cout<<"请输入明文:";cin>>p; n=p; cout<<"请输入密钥:";cin>>k; m=n+k; cout<<"密文是:"< int a; a=c; m=a-k; cout<<"明文是:"< (2)实验结果: 2、放射变换加密 (1)代码: #include void main () { int a,b; cout<<"输入密钥a:";cin>>a; cout<<"输入密钥b:";cin>>b; char p[3]; int q[3]; char c[3]; cout<<"请输入明文:"; cin>>p; for (int i=0;i<3;i++) { q[i]=(int)p[i]; q[i]=(a*(q[i]-97)+b)%26; c[i]=(char)(q[i]+97); cout< cout< int f=1; while (a*f%26!=1) { f++; } cout<<"请输入密文:"; cin>>c; for (i=0;i<3;i++) { q[i]=(int)c[i]; if((q[i]-97-b)<0) { q[i]=((f*(q[i]-97-b))+26*9999)%26; } else { q[i]=(f*(q[i]-97-b))%26; } p[i]=(char)(q[i]+97); cout< } cout< (2)实验结果: 五、思考题 1、你所知道的古典密码算法还有那些?详细说明具体的加密和解密过程。 2、你所看过的和密码有关的电影或小说有哪些?描述一下其中的加密基本原理. 答(1):古典密码算法还有凯撒密码: A和B是有 n个字母的字母表。 定义一个由A到B的映射:f:A→B f(ai )= bi=aj j=i+k mod n 加法密码是用明文字母在字母表中后面第 k个字母来代替。 K=3 时是著名的凯撒密码。 恺撒密码——历史上第一个密码技术 (2):小说有数字城堡,电影不知道达芬奇密码算不算。下载本文