返回列表 發帖

[20111105]古典密碼加解密測試

本帖最後由 ray 於 2011-11-5 20:52 編輯

#include<iostream>
using namespace std;

//寫一個交換函數 for 打亂編碼表
void swap(int *a,int *b)
{
   int *t = a;
   a = b;
   b = t;
}

int main()
{
     int enctab[256],dectab[256];
     //將0-255填入編碼字元表
     for(int i=0;i<256;i++)
        enctab = i;
     //打亂編碼字元表 使用rand()取"欲編碼字元數量"的餘數     
     for(int i=0;i<256;i++)
        swap(enctab[rand()%256],enctab[rand()%256]);
     
     //for(int i=0;i<256;i++)
     //   cout << enctab << " ";
        
     //利用編碼表建立解碼表
     for(int i=0;i<256;i++)
        dectab[enctab] = i;
     string s;
     int i;
     //使用無窮迴圈輸入明文字串(s)
     while(cin >> s)
     {
          //將明文字串的每一個字元對照編碼錶取得編碼字元後存回
          for(i=0;i<s.length();i++)
          {                  
            s = enctab[s+128]-128;      
          }
          //輸出加密後的密文
          cout << "encode:" << s << endl;   
          //將密文字串的每一個字元對照解碼錶取得解碼字元後存回
          for(i=0;i<s.length();i++)
          {                  
            s = dectab[s+128]-128;      
          }
          //輸出解密後的明文
          cout << "decode:" << s << endl;
     }
     return 0;
}

返回列表