查看: 606|回复: 0

[C++资源] [C++] 社会主义核心价值观的加解密工具

[复制链接]
发表于 2019-12-30 15:12 | 显示全部楼层 |阅读模式
大法师 2019-12-30 15:12 606 0 显示全部楼层
之前有网友发了这个程序觉得挺好玩的,放话说C++更容易实现,所以重新写了个C++版本。
代码量确实比C少很多,性能应该会比C高(我猜的),已移植了Linux/Windows/Mac os版本,详见附件。
  1. #include <iostream>
  2. #include <string>
  3. #include <map>
  4. #include <windows.h>
  5. using namespace std;

  6. map<int,int> h;
  7. string t[]={"富强","民主","文明","和谐","自由","平等","公正","法治","爱国","敬业","诚信","友善"};
  8. void init(){
  9.         SetConsoleTitle("[C++] 社会主义核心价值观的加解密工具    -by JuncoJet");
  10.         for(int i=0;i<12;i++){
  11.                 h[*(int*)t[i].c_str()]=i;
  12.         }
  13. }
  14. void encode(string s){
  15.         for(int i=0;i<(int)s.length();i++){
  16.                 char vv,v=vv=s.c_str()[i];
  17.                 for(int x=1;x>=0;x--){
  18.                         vv=v>>(x*4);
  19.                         int q=vv&0xf;
  20.                         if(q>10){
  21.                                 cout<<t[11]<<t[q-11];
  22.                         }else{
  23.                                 cout<<t[q];
  24.                         }
  25.                 }
  26.         }
  27.         cout<<endl<<endl;
  28. }
  29. void decode(string s){
  30.         int c=0,f=0,l=(int)s.length();
  31.         char *p=new char[l/4/2+1]();
  32.         for(int i=0;i<l;i+=4){
  33.                 int q=h[*(int*)&(s.c_str()[i])];
  34.                 if(f){
  35.                         q+=11;
  36.                         f--;
  37.                 }else if(q==11){
  38.                         f++;
  39.                         continue;
  40.                 }
  41.                 p[c/2]|=q<<((c+3)%2*4);
  42.                 c++;
  43.         }
  44.         cout<<p<<endl<<endl;
  45.         delete []p;
  46. }
  47. void main(){
  48.         int f;
  49.         init();
  50.         for(;;){
  51.                 cout<<"输入功能 1.加密 2.解密:";
  52.                 while(!(cin>>f)){
  53.                         cin.clear();
  54.                         cin.ignore();
  55.                 }
  56.                 if(f>2||f<1){
  57.                         cout<<"输入有误,重新输入"<<endl;
  58.                         continue;
  59.                 }
  60.                 cout<<endl<<"现在开始"<<(f>1?"解密":"加密")<<":"<<endl;
  61.                 string s;
  62.                 cin>>s;
  63.                 if(f>1){
  64.                         decode(s);
  65.                 }else{
  66.                         encode(s);
  67.                 }
  68.         }
  69. }
复制代码


122949bnnwdsszs8rjgnjj_副本.jpg
122951xfyfmrro3qrflsqv_副本.jpg

核心价值观加密.zip

42.68 KB, 下载次数: 7, 下载积分: 牛币 -2 个

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表 发新帖

快速回复 返回顶部 返回列表