亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版
標題:
30轉子恩格瑪機對文件進行加密C++源程序
[打印本頁]
作者:
51黑黑
時間:
2016-1-6 01:57
標題:
30轉子恩格瑪機對文件進行加密C++源程序
//加密機轉子類
class egm_zz
{
public:
//公共的行為或屬性
egm_zz(char *r,char *l);//構造函數(參數為接線盤排列信息)
void set_wz(char key);//設置密鑰(轉子初始位置)
void set_guize(int gz);//設置轉動規則(加密多少字節轉動一次轉子)
char get_wz();//返回轉子位置
char get_R_L(char data);//從右往左進行一次替換
char get_L_R(char data);//從左往右進行一次替換
void go();//轉子進行一次轉動判定
private:
//私有的行為或屬性
char R[256];//轉子右接線盤
char L[256];//轉子左接線盤
char wz;//轉子位置
int guize;//轉子轉動規則
int guize_A;//轉動數據累加器
};
//加密機反射板類
class egm_fs
{
public:
//公共的行為或屬性
egm_fs(char *r,char *l);//構造反射板
char get_fs(char data);//進行一次數據替換
private:
//私有的行為或屬性
char R[128];//反射板接線盤共128對接線分別對應0x00~0xFF
char L[128];
};
//定義30轉子的恩格瑪機
class egm_30
{
public:
//公共的行為或屬性
egm_30();//構造函數
void set_key_wz(char *key);//設置密鑰串的轉子位置部分(30個)
void set_key_guize(int *key);//設置密鑰串的轉子轉動規則部分(30個)
char jiami(char data);//對一個字節進行加密
private:
//私有的行為或屬性
egm_zz *zz[30];//30個轉子對象
egm_fs *fs;//1個反射板對象
};
//對一個字節進行加密(核心算法)
char egm_30::jiami(char data)
{
int i;
int d;
d=data;
d=d+zz[0]->get_wz();
if(d>255) d-=256; //修正并定位轉動后的0號轉子的觸點位置
d=zz[0]->get_R_L((char)d);
//1號到29號轉子從右往左處理一輪
for(i=0;i<29;i++)
{
if(zz[i]->get_wz()<zz[i+1]->get_wz())
{
d=d+(zz[i+1]->get_wz()-zz[i]->get_wz());
if(d>255) d-=256;
}
if(zz[i]->get_wz()>zz[i+1]->get_wz())
{
d=d-(zz[i]->get_wz()-zz[i+1]->get_wz());
if(d<0) d+=256;
}
d=zz[i+1]->get_R_L((char)d);
}
//反射板處理一次數據
d=d-zz[29]->get_wz();
if(d<0) d+=256;
d=fs->get_fs((char)d);
//29號轉子左到右處理
d=d+zz[29]->get_wz();
if(d>255) d-=256;
d=zz[29]->get_L_R((char)d);
//28號到0號轉子從左往右處理一輪
for(i=29;i>0;i--)
{
if(zz[i]->get_wz()<zz[i-1]->get_wz())
{
d=d+(zz[i-1]->get_wz()-zz[i]->get_wz());
if(d>255) d-=256;
}
if(zz[i]->get_wz()>zz[i-1]->get_wz())
{
d=d-(zz[i]->get_wz()-zz[i-1]->get_wz());
if(d<0) d+=256;
}
d=zz[i-1]->get_L_R((char)d);
}
d=d-zz[0]->get_wz();
if(d<0) d+=256;
//轉子轉動處理
for(i=0;i<30;i++)
{
zz[i]->go();
}
return (char)d;
}
復制代碼
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1