四种古典密码的C++实现(4)-----Caesar密码
2017-10-25 09:09
232 查看
//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 ; 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; }
相关文章推荐
- 四种古典密码的C++实现(1)-----Hill密码
- 四种古典密码的C++实现(2)-----Virginia密码
- 四种古典密码的C++实现(3)-----Playfair密码
- 趣味题:恺撒Caesar密码(c++实现)
- 古典密码算法的设计与实现(C++实现)
- C++调用有道词典API实现Caesar密码的加密解密
- C++实现六位数字密码字典的生成 2012-2-12 12:16
- 学习笔记:古典密码学凯撒密码及其扩展的编程实现
- 并查集类的c++封装,比较union_find algorithm四种实现方法之间的性能差别
- 简单的加密与解密的实现---仿射密码(c++使用string)
- c/c++实现获取NOD32升级账号密码
- 实现Caesar密码(加法密码)加解密
- C++全密码生成的实现代码
- 仿射密码 c++实现
- DES算法C++代码实现-密码学
- 古典密码之hill密码的加密与解密程序实现
- 数据结构--约瑟夫环(含密码,C++实现)
- C/C++实现控制台密码隐藏和字符串转换为整形
- 并查集类的c++封装,比较union_find algorithm四种实现方法之间的性能差别
- 数据结构与算法分析基础----概念初步&最大子序和四种算法C++实现&对分查找&欧几里德算法