欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
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.raoushi.com/bbs/)
Powered by Discuz! X3.1