本帖最後由 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;
} |