题目:
1、实现移位密码的加密算法
提示:
(1)输入明文
(2)输入密钥
(3)输出密文
2、实现移位密码的解密算法
提示:
(1)输入密文
(2)输入密钥
(3)输出明文
代码例子:
工具:BodeBlock
语言:C++
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<map>
#include<string>
#include<string.h>
using namespace std;
map<char,int>letter;
void shouye() //首页
{
system("cls");
printf("欢迎使用移位密码程序!\n");
printf("请选择使用功能:\n");
printf("1:加密 2:解密 0:退出\n");
}
void init()
{
for(int i=0;i<=26;i++)
{
char l='a'+i;
letter[l]=i;
}
}
void enc(char s[],int k) //加密算法
{
int len=strlen(s);
string ans="";
for(int i=0;i<len;i++)
{
int a=letter[s[i]];
int b=(a+k)%26;
ans+=('a'+b);
}
cout<<ans<<endl;
}
void solve(char s[],int k) //解密算法
{
int len=strlen(s);
string ans="";
for(int i=0;i<len;i++)
{
int a=letter[s[i]];
int b=(a+26-k)%26;
ans+=('a'+b);
}
cout<<ans<<" "<<endl;
}
void jiami()
{
printf("请输入明文:\n");
char s[15000];
scanf("%s",&s);
int k;
printf("请输入密钥:\n");
scanf("%d",&k);
printf("输出密文:\n");
enc(s,k);
}
void jiemi()
{
printf("请输入密文:\n");
char m[15000];
scanf("%s",&m);
printf("请输入密钥:\n");
int k;
scanf("%d",&k);
solve(m,k);
}
void choose()
{
int test=1;
while(test)//对于菜单的选择
{
printf("\n请输入选择(1:加密 2:解密 0:退出):\n");
int n;
scanf("%d",&n);
if(n==1)
{
jiami();
}
else if(n==2)
{
jiemi();
}
else if(n==0)
{
printf("欢迎使用!!\n");
test=0;
return;
}
else
{
printf("输入错误!\n请重新输入!");
choose();
}
}
}
int main()
{
init();
shouye();
choose();
system("pause");
return 0;
}