仿射密码C语言实现实验报告,密码学实验报告..doc

密码学实验报告.

《 —现代密码学—》

实 验 指 导 书

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

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

2011年 11 月

实验一 古典密码

实验学时:2学时

实验类型:验证

实验要求:必修

一、实验目的

编程实现古典密码的加解密方法。

二、实验内容

(1)移位密码的加密和解密函数。

(2)仿射密码的加密和解密函数。

(3)维吉尼亚密码的加密和解密函数。

三、实验原理、方法和手段

(1)移位密码

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

解密方法为

(2)仿射密码

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

解密方法为

(3)维吉尼亚密码

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

解密过程为

四、实验组织运行要求

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

五、实验条件

每人一台计算机独立完成实验,有如下条件:

(1)硬件:微机;

(2)软件:VC++6.0、VC++.Net 2005。

六、实验步骤

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

(2)在主函数中调用各函数,实现加密和解密。

七、实验报告

实验报告主要包括实验目的、实验内容、实验原理、源程序及结果。

移位密码加密:

#include

#define n 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>='z'?string[i]+n-26:string[i]+n);

}

}

void main()

{

char str[100];

printf("请输入一段明文");

gets(str);

change(str);

printf("密文为:\n");

puts(str);

}

移位密码解密:

#include

#define n 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

}

}

void main()

{

char str[100];

printf("请输入一段密文");

gets(str);

change(str);

printf("明文为:\n");

puts(str);

}

仿射密码加密:

#include

void fun( char a[],int x,int y)

{

int i;

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

{

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

}

}

main()

{

char string[100];

int x,y;

printf("输入");

gets(string);

printf("请输入密钥");

scanf("%d,%d",&x,&y);

printf("明文:%s\n",string);

fun(string,x,y);

printf("密文为:%s\n",string);

}

仿射密码解密:#include

void fun( char a[],int x,int y)

{

int i;

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

{

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

}

}

main()

{

char string[100];

int x,y;

printf("输入");

gets(string);

printf("请输入密钥");

scanf("%d,%d",&x,&y);

printf("密文:%s\n",string);

fun(string,x,y);

printf("明文:%s\n",string);

}

密码加密:

#include

void change(char old[],char new1[][5])

{ int i,j,t;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值