凯撒加密是一种最简单且最广为人知的加密技术。它是一种替换加密技术,明文中所有的字母都在字母表上向前或向后按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A被替换成D,B变成E,以此类推。
下面我是用C++实现的凯撒加密。
#include<iostream>
#include<string.h>
using namespace std;
char encrypt(string &ch,int n){/*加密函数,把字符向右循环移位n*/
for(int i=0;i<ch.length();i++){
if(ch[i]>='A'&&ch[i]<='Z')
ch[i]='A'+(ch[i]-'A'+n)%26;
if(ch[i]>='a'&&ch[i]<='z')
ch[i]='a'+(ch[i]-'a'+n)%26;
}
cout<<"加密后为:";
for(int j=0;j<ch.length();j++){
cout<<ch[j]<<" ";
}
cout<<endl;
}
char exEncrypt(string &ch1,int n1){/*解密函数,把字符向左循环移位n*/
for(int i=0;i<ch1.length();i++){
if(ch1[i]>='A'&&ch1[i]<='Z')
ch1[i]='A'+(ch1[i]-'A'-n1)%26;
if(ch1[i]>='a'&&ch1[i]<='z')
ch1[i]='a'+(ch1[i]-'a'-n1)%26;
}
cout<<"解密后为:";
for(int j=0;j<ch1.length();j++){
cout<<ch1[j]<<" ";
}
cout<<endl;
}
int main(){
string a;
int n;
cin>>a>>n;
encrypt(a,n);
exEncrypt(a,n);
return 0;
}
运行结果如图: