- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《现代密码学》
课程实验报告
上课纪律(20%) 实验过程及结果(40%) 实验报告质量(40%) 总分: 教师签字: 致谢
本次程序设计试验得到了各位老师和同学们的热情帮助,特别是在相关参考程序的解读和程序编写上面,得到了大家的热情帮助,在此表示感谢。
项目一、古典密码设计实验
1 实验内容
编写仿射密码算法的实现程序;
(2)利用仿射密码算法实现对简单英文文档的加密。
2 主要程序代码清单
#includeiostream
#includemath.h
#define M 26 //定义密钥空间
using namespace std;
int Inverse (int a)//逆元函数
{
for(int i=2;ia;i++)
{
if((a%i == 0)(M%i == 0))
{
cout请输入互素的元素:endl;
cout他们存在公因子且他们的公因子为:iendl;
return -1;// 返回-1
}
}
struct vector
{
int a;
int b;
};
int temp = 0,temp_a,temp_b;
vector v1,v2;
v1.a = 0;
v1.b = M;
v2.a = 1;
v2.b = a;
while(true)
{
temp = int(v1.b/v2.b);
temp_a = v1.a;
temp_b = v1.b;
v1.a = v2.a;
v1.b = v2.b;
v2.a = temp_a - temp * v2.a;
v2.b = temp_b - temp * v2.b;
if(v2.b == 1)
break;
}
if(v2.a 0)
return v2.a;
else
return M+v2.a;
}
int Encryption(int m,int k1,int k2)
{
return (k1*m+k2)%M;
}
int Decryption(int c,int k1,int k2)
{
int temp_k = Inverse(k1);
int result = (temp_k*(c-k2))%26;
if(result0)
return result;
else
return M+result;
}
void main()
{
int k1=11,k2=3,m=13,c;
c = Encryption(m,k1,k2);
cout仿射密码的明文为:m,仿射密码的密钥为:(k1,k2),算法实现结果为:加密过程endl;
coutcendl;
cout仿射密码的密文为:c,仿射密码的密钥为:(k1,k2),算法实现结果为:解密过程endl;
m = Decryption(c,k1,k2);
coutmendl;
}
3 测试数据与实验结果
(1)测试数据:
定义整数型数据,密钥 k1=11,密钥k2=3,明文为m=13,密文为c
利用e(x)=(k1x+k2)mod26
d(y)=k1_(y-k2)mod26
求解加密解密数据。
实验结果:程序实现截图:
4.总结
本次程序设计我们利用古典放射密码进行程序设计,因此程序设计比较简单,我们引用西安电子科技大学《密码学基础》中的一个放射密码例题,定义整数型数据,密钥 k1=11,密钥k2=3,明文为m=13,密文为c利用 e(x)=(k1x+k2)mod26
d(y)=k1_(y-k2)mod26
求解加密解密数据。
我们分别对输入的明文进行加密和解密运算,所得到的结果是相一致的,因此这就验证了我们的程序设计是完全正确的。
上课纪律(20%) 实验过程及结果(40%) 实验报告质量(40%) 总分: 教师签字:
《现代密码学》
课 程 实 验 报 告
项目名称: RSA公钥密码算法实验 学生姓名: 刘艳龙 学生学号: 200807020116 指导教师: 范安东 完成日期: 2011年7月5日
项目二、RSA公钥密码算法实验
1 实验内容
(1)编写获取两个大素数的程序;
(2)编写RSA加解密算法的程序。
2 主要程序代码清单(C++)
#includeiostream
#includecmath
using namespace std;
void main()
{
int a,b;//输入两个互素的大数
cout请输入两个大数(互素的数):endl;
cinab;
couta=a,b=bendl;
int n,x;
n=a*b;
x=(a-1)*(
文档评论(0)