实验一
一、实验名称:替代密码和置换密码的实现
二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。
三、实验内容:
A:替代密码
1、实验原理:使用替代法进行加密,将明文中的字符用其他字符替代后形成密文。最早的替代密码是由Julius Caesar 发明的Caesar (恺撒)密码,又叫循环移位密码。它的加密过程可表示为: E(m) = (m+k ) mod n
其中,m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数。
解密算法是:m = D(L) =(L-k)mod 26;
2、算法设计:使用两个函数分别进行加密和解密的过程,在主程序中通过选择加密还是解密来调用不同函数进行替代密码的加密和解密过程实现;
3、函数接口:
加密:int encrypt()
{
printf("输入明文:\n");
scanf("%s",a);
for(i=0;a[i]!='\0';i++)
{
b[i]=a[i]-64;
}
printf("输入一位密钥\n");
scanf("%d",&k);
printf("\n");
for(i=0;b[i]!='\0';i++)
{
m[i]=(b[i]+k)%26+64;
}
printf("%s",&m);
return 0;
}
解密:int decode()
{
printf("输入密文:\n");