密码学实验报告

2018-12-17 15:03

(此文档为word格式,下载后您可任意编辑修改!)

《 — 现代密码学—》 实 验 指 导 书

适用专业: 计算机科学与技术

江苏科技大学计算机科学学院

2011年 11 月

实验一 古典密码

实验学时:2学时 实验类型:验证 实验要求:必修

1

一、实验目的

编程实现古典密码的加解密方法。 二、实验内容

(1)移位密码的加密和解密函数。 (2)仿射密码的加密和解密函数。 (3)维吉尼亚密码的加密和解密函数。 三、实验原理、方法和手段 (1)移位密码

对于明文字符,加密密钥,加密方法为

解密方法为

(2)仿射密码

对于明文字符,加密密钥,加密方法为 y?ax?b,gcd(a,26)?1,b?1,2,?,25 解密方法为

(3)维吉尼亚密码

选取密钥字Key,将明文按照密钥字长度分组,将明文与密钥字对应字符相加并对26求余,即为密文字符。

解密过程为

四、实验组织运行要求

本实验采用集中授课形式,每个同学独立完成上述实验要求。 五、实验条件

每人一台计算机独立完成实验,有如下条件: (1)硬件:微机;

(2)软件:VC++6.0、VC++.Net 2005。 六、实验步骤

(1)将各函数编写完成;

2 (2)在主函数中调用各函数,实现加密和解密。 七、实验报告

实验报告主要包括实验目的、实验内容、实验原理、源程序及结果。 移位密码加密:

#include

for(i=0;string[i]!='\\0';i++) {

if(string[i]>='a'&&string[i]<='z')

string[i]=(string[i]+n>='z'?string[i]+n-26:string[i]+n); } }

void main() {

char str[100];

printf(\请输入一段明文\ gets(str); change(str);

printf(\密文为:\\n\ puts(str); }

移位密码解密:

#include

3 void change(char string[]) { int i;

for(i=0;string[i]!='\\0';i++) {

if(string[i]>='a'&&string[i]<='z')

string[i]=(string[i]+n<'a'?string[i]-n+26:string[i]-n); } }

void main() {

char str[100];

printf(\请输入一段密文\ gets(str); change(str);

printf(\明文为:\\n\ puts(str); }

仿射密码加密:

#include

for(i=0;a[i]!='\\0';i++) {

a[i]=(x*(a[i]-97)+y)&+97;

4 } } main() {

char string[100];

int x,y; }

printf(\输入\gets(string);

printf(\请输入密钥\scanf(\printf(\明文:%s\\n\fun(string,x,y);

printf(\密文为:%s\\n\

仿射密码解密:

#include

for(i=0;a[i]!='\\0';i++) {

a[i]=(x*(a[i]-97)+y)&+97; } } main() {

char string[100];

5


密码学实验报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:无损检测机构等级划分办法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: