班级: 学号: 姓名: 实验组别:
实验日期: 报告日期: 成绩:
报告内容:(目的和要求、原理、步骤、数据、计算、小结等)
实验名称:凯撒密码算法实验
一、实验目的
通过实验熟练掌握凯撒密码算法,学会凯撒密码算法程序设计,提高C++程序设计能力。
二、实验要求
(1)输入:任意的一段明文。
(2)输出:根据加密算法,实现对明文的加密。
(3)要求有对应的程序调试记录和验证记录。
三、实验原理(流程图):
四、实验数据(源代码):
#include <iostream>
#include <string>
using namespace std;
//获取密钥函数getKey()
int getKey()
{
int key;
cout << "请输入密钥:";
cin >> key;
return key;
运动会开幕
}
//将明文中的字符全部转化为大写的函数change()
void change(char s[])
{
int i;
for(i = 0; i < strlen(s); i++)
景色 {
if(s[i] > 96 && s[i] < 122)
s[i] = s[i] - 32;
}
}
//判断输入的明文格式是否有误的函数getError()
//有误则返回0,否则就返回1
int getError(char s[])
{
int i,error;
for(i = 0; i < strlen(s); i++)
{
if((s[i] > 65 && s[i] <= 82)||(s[i] > 96 && s[i] <= 122))
{
error = 1;
}
el
{
error = 0;
break;
}
}
return error;
}
//将明文转化为密文的函数getCode
void getCode(char s[], char ss[], int key)
{
int i, j;
cout << "译出的密文:";
for(i = 0;i < strlen(ss); i++)
{
for(j = 0;j < 26; j++)
{
if(ss[i] == s[j])
{
cout << s[(j+key)%26];
}
}
}
孙悟空原型
cout << endl;;
}
void main()
{
char ss[26], incode[1000];
int i, key, asc = 65;
for(i = 0; i < 26; i++)情话最暖心长句
电影单词
{
ss[i] = asc++;
}
key = getKey();
cout<<"请输入密文:";
任务栏不见了 getchar('\n');
马尔代夫选岛
gets(incode);
if(getError(incode) == 0)
{
cout << "您的输入有误!请重新输入!\n";
exit(1);
}
change(incode);
getCode(ss, incode, key);
}
五、程序运行结果:
请输入密钥:6
请输入明文:ilovecryptology
译出的密文:ORUBKIXEVZURUME
Press any key to continue
六、实验小结:
通过本次实验,将凯撒密码算法的理论应用到实践中来,利用C++编程实现了凯撒密码算
法的加密过程,将理论与实践结合起来,加深了课本上凯撒密码算法理论的理解!
传播虚假信息罪