當前位置:編程學習大全網 - 編程語言 - 編程編碼

編程編碼

C++編程實現弗吉尼亞密碼加密和解密

編程實現弗吉尼亞密碼加密和解密

要求:用戶可以輸入密鑰。

#包括

使用命名空間std

#定義MINCHAR 32

#定義CHARSUM 94

char表[CHARSUM][CHARSUM];

布爾值Init();

bool編碼(char* key,char* source,char * dest);

bool Dncode(char* key,char* source,char * dest);

int main()

{

如果(!Init())

{

cout & lt& lt"初始化錯誤!"& lt& ltendl

返回1;

}

字符鍵[256];

char str 1[256];

char str 2[256];

int操作;

while(1)

{

{

cout & lt& lt"請選擇壹個操作:1。加密;2.解密;-1.退出\ n ";

CIN & gt;& gt運營;

}while(操作!=-1 & amp;& amp操作!= 1。& amp操作!= 2);

if(運算== -1)

返回0;

Else if(operation == 1)//加密

{

cout & lt& lt請輸入密鑰:“;

CIN & gt;& gt關鍵;

cout & lt& lt"請輸入要加密的字符串:";

CIN & gt;& gtstr 1;

Encode(key,str1,str 2);

cout & lt& lt"加密字符串:"

}

Else if(operation == 2)//解密

{

cout & lt& lt請輸入密鑰:“;

CIN & gt;& gt關鍵;

cout & lt& lt請輸入要解密的字符串:“”;

CIN & gt;& gtstr 1;

Dncode(key,str1,str 2);

cout & lt& lt"解密的字符串:"

}

cout & lt& ltendl

}

返回0;

}

//初始化弗吉尼亞方陣

bool Init()

{

int i,j;

for(I = 0;我& ltCHARSUMi++)

{

for(j = 0;j & ltCHARSUMj++)

{

table[j]= MINCHAR+(I+j)% CHARSUM;

}

}

返回true

}

//加密

// key: key

// source:要加密的字符串。

// dest:加密的字符串。

布爾編碼(char* key,char* source,char* dest)

{

char * tempSource = source

char * tempKey = key

char * tempDest = dest

{

* tempDest = table[(* tempKey)-MINCHAR][(* temp source)-MINCHAR];

tempdest++;

如果(!(*(++tempKey)))

tempKey = key

} while(* temp source++);

dest[strlen(source)]= 0;

返回true

}

//解密

// key: key

// source:要解密的字符串。

// dest:解密後的字符串。

布爾Dncode(char* key,char* source,char* dest)

{

char * tempSource = source

char * tempKey = key

char * tempDest = dest

字符偏移量;

{

offset =(* temp source)-(* tempKey);

offset = offset & gt= 0 ?offset:offset+CHARSUM;

* tempDest = MINCHAR+offset;

tempdest++;

如果(!(*(++tempKey)))

tempKey = key

} while(* +++temp source);

dest[strlen(source)]= 0;

返回true

}

  • 上一篇:直播類視頻App軟件如何開發
  • 下一篇:開著我的愛車北京BJ20出城遊玩欣賞魅力景色!
  • copyright 2024編程學習大全網