- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《现代密码学》
课 程 实 验 报 告
项目名称:
古典密码设计实验
学生姓名:
张立
学生学号:
200707020229
指导教师:
范安东
完成日期:
20
1 实验内容
(1)编写仿射密码算法的实现程序;
(2)利用仿射密码算法实现对简单英文文档的加密。
2 主要程序代码清单
#includeiostream
#define N 100
using namespace std;
void affine_encrypt(int ka,int kb)//仿射加密函数
{
char c[N];
int length=0;
cout请输入原始的明文:endl;
for(int i=0;iN;i++)
{
cinc[i];
length++;
if(c[i]==0)
break;
}
for(i=0;ilength;i++)
{
if(c[i]96c[i]123) /*如果是小写字母*/
c[i] = (ka*(c[i]-97)+kb)%26+97;
else if(c[i]64c[i]91) /*如果是大写字母*/
c[i] = (ka*(c[i]-65)+kb)%26+65;
}
cout明文经仿射加密后的密文为:endl;
for(i=0;ilength-1;i++)
{
coutc[i];
}
coutendl;
}
int Ni(int a, int b) /*求a相对于b的逆*/
{
int i = 0;
while(a*(++i)%b!=1);
return i;
}
void affine_decrypt(int ka,int kb)//仿射解密函数
{
char c[N];
int length=0,temp;
cout请输入原始的密文:endl;
for(int i=0;iN;i++)
{
cinc[i];
length++;
if(c[i]==0)
break;
}
for(i=0; ilength; i++)
{
if(c[i]64c[i]91)
{
temp = Ni(ka,26)*((c[i]-65)-kb);
if(temp0)
c[i] = temp%26+26+65;
else
c[i] = temp%26+65;
}
if(c[i]96c[i]123)
{
temp = Ni(ka,26)*((c[i]-97)-kb);
if(temp0)
c[i] = temp%26+26+97;
else
c[i] = temp%26+97;
}
}
cout密文经仿射解密后的明文为:endl;
for(i=0;ilength-1;i++)
{
coutc[i];
}
coutendl;
}
void main()
{
cout古典密码—仿射密码:endl;
coutendl;
cout加密:endl;
affine_encrypt(3,8);
coutendl;
cout解密:endl;
affine_decrypt(3,8);
coutendl;
}
3 测试数据与实验结果
(1)测试数据:
加密:zhangli
解密:fdivapg
(2)实验结果:
上课纪律(20%)
实验过程及结果(40%)
实验报告质量(40%)
总分:
教师签字:
文档评论(0)