四种古典密码的C++实现(4)-----Caesar密码
来源:互联网 发布:全国软件人才证书 编辑:程序博客网 时间:2024/05/18 00:21
//Caesar密码/*理解算法最重要,最好自己动手实现试试看,可以使用MFC写一个简单的交互界面*/#include<iostream>#include<cmath>using namespace std;#define N 1000 //全局变量char str[100]; //用于存储处理前字符串char enstr[100]; //用于存储处理后字符串int num=0; //用于累计字符数量char *p; //用于指向处理字符串int key;//加密void encryption(){ while(*p!='\0') { *p=(*p-97+key)%26+97; p++; } cout<<"加密后字符:"<<str<<endl<<endl;}//解密void decryption(){ while(*p!='\0') { *p=(*p-71-key)%26+97; p++; } cout<<"解密后字符:"<<str<<endl<<endl;}//单文字破解 void get_key(){ char e; char d; cout<<"请输入已知位置明文:"; cin>>e; cout<<"请输入已知位置密文:"; cin>>d; key=abs(e-d)%26; cout<<"密钥为:"<<key<<endl;}//全结果破解 void decrypt() { char x[N]; cout<<"请输入加密后的明文:\n"; cin>>x; for(int i=1;i<=25;++i) { for(int j=0;;++j) { if(x[j]>96&&x[j]<123) x[j]=(x[j]-1-122)%26+122; else if(x[j]>64&&x[j]<91) x[j]=(x[j]-1-90)%26+90; else x[j]=x[j]; if(x[j]==0) break; } cout<<"秘钥为 "<<i<<"时,此秘钥加密前的原文为:"<<x<<endl; } } //主函数 int main(){ string ord; while(1) { cout<<"请选择功能:\n"; cout<<"1.Encryption(加密)\n2.Decryption(解密)\n3.Decipher(破解)\n4.Exit(退出) : "; p=str; cin>>ord; if(ord=="1") { cout<<"Input:请输入需要加密的内容(不支持空格和其他字符)"<<endl; cin>>str; p=str; cout<<"Key:请输入密钥 "; cin>>key; encryption(); } else if(ord=="2") { cout<<"Input:请输入需要解密的内容(不支持空格和其他字符):"<<endl; cin>>str; p=str; cout<<"Key:请输入密钥 "; cin>>key; decryption(); } else if(ord=="3") { cout<<"完全未知密文,输入明文列出所有可能请输入 1;\n已知某个明文字母的对应密文请输入 2;\n"; int choose; cin>>choose; if(choose==1) decrypt(); else if(choose==2) get_key(); } else if(ord=="4") break; else { cout<<"Error :输入错误,请重新开始\n"; continue; } } return 0; }
阅读全文
0 0
- 四种古典密码的C++实现(4)-----Caesar密码
- 四种古典密码的C++实现(1)-----Hill密码
- 四种古典密码的C++实现(2)-----Virginia密码
- 四种古典密码的C++实现(3)-----Playfair密码
- [古典密码]:Caesar cipher(凯撒密码)
- (1)Caesar密码算法的Java实现
- 古典密码算法的设计与实现(C++实现)
- 古典密码(凯撒密码/维吉尼亚密码/Play fair密码/Hill密码)的实现(MFC界面)
- 实现Caesar密码(加法密码)加解密
- 实现Caesar密码(加法密码)加解密
- caesar密码
- Caesar密码
- Caesar密码
- Caesar密码
- Caesar 密码
- 古典密码算法 凯撒(Caesar)密码,又叫循环移位密码
- 古典密码
- 古典密码
- 1-2 输出N个数的平方和立方值
- Android 购物车 自定义加减器
- Python基础:列表
- 国际短信接口文档-json
- 移动端开发(二):rem单位的计算问题
- 四种古典密码的C++实现(4)-----Caesar密码
- 安卓自定义View之画图
- [i.MX6Q][QNX Neutrino 6.6.0]调试笔记------Buildfile
- Android Studio cannot launch avd in emulator问题解决
- STL空间配置器的剖析
- 预处理与结构体简述
- Java排序之归并排序
- DrawerLayout自定义侧拉 简单实现
- DES密码的C++实现