移位密码(加密+解密)C++实现
2024-08-30 00:53:29
移位密码
加密C=Ek(m)=m+k mod 26
解密m=Dk(m)=c-k mod 26
密钥空间|k|=26=|c|=|m|
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<map>
#include<string>
using namespace std;
map<char,int>letter;
void init()
{
for(int i=;i<=;i++)
{
char l='a'+i;
letter[l]=i;
}
}
void enc(char s[],int k)
{
int len=strlen(s);
string ans="";
for(int i=;i<len;i++)
{
int a=letter[s[i]];
int b=(a+k)%;
ans+=('a'+b);
}
cout<<ans<<endl;
} void solve(char s[])
{
int len=strlen(s);
for(int k=;k<=;k++)
{
string ans="";
for(int i=;i<len;i++)
{
int a=letter[s[i]];
int b=(a+k)%;
ans+=('a'+b);
}
cout<<ans<<" "<<k<<endl;
}
} int main()
{
init();
printf("请输入明文:\n");
char s[],m[];
scanf("%s",&s);
int k;
printf("请输入密钥:\n");
scanf("%d",&k);
printf("输出密文:\n");
enc(s,k);
printf("请输入密文:\n");
scanf("%s",m);
printf("请输明文:\n");
solve(m);
system("pause");
return ;
}
最新文章
- LTE Air interface Channels-----http://www.rfwireless-world.com/Tutorials/LTE-logical-transport-physical-channels.html
- 用正则验证字符串格式,形如:A)XXX B)XXXX C)XXX
- iOS开发优化的25个方案
- iOS 进阶 第八天(0407)
- [Yii2]Access to debugger is denied due to IP address restriction. The requesting IP address is
- 自定义HtmlHelper方法
- Android: ADT 23.0.2
- jQuery中$.extend(true,object1, object2);深拷贝对象
- 关于MATLAB处理大数据坐标文件201762
- 客户端putty xshell连接linux中vim不能正常使用小键盘的问题
- django三种文件下载方式
- javascript 用函数语句和表达式定义函数的区别详解
- ubuntu安装docker-ce
- 群发技术-使用python3给微信好友群发消息
- Linux常用基本命令(chmod)
- 数据仓库建模与ETL的实践
- @Autowired 和 @Qualifier
- 简便开发插件 -- lombok
- Apache Commons工具集简介
- Caliburn.Micro对目录结构的要求