基於C++的分組密碼加解密實現

1 設計實現html

程序完成課程設計全部必作與選作的要求,包含的函數以下:dom

// S 盒置換函數

BlockType SBox_Encode(BlockType x);測試

// S 盒逆變換加密

BlockType SBox_Decode(BlockType x);url

// P 盒置換.net

BlockType PBox_Encode(BlockType x);設計

// P 盒逆變換code

BlockType PBox_Decode(BlockType x);htm

// 輸出顯示一個 16 位二進制數

void OutPut_Bin(BlockType p);

// 輸出顯示一個密鑰

void OutPut_Key(KeyType key);

// 分組加密函數

void BlockEncryption(BlockType PlainText, BlockType

&CipherText, KeyType Key);

// 分組解密函數

void BlockDecryption(BlockType &PlainText, BlockType

CipherText, KeyType Key);

// 生成指定密鑰

void Key_Engine();

// 隨機生成密鑰

void Key_Random();

// 文件加密

int FileEncryption(char *PlainFile,char *CipherFile,KeyType Key);

// 文件解密

int FileDecryption(char *PlainFile,char *CipherFile,KeyType Key);

// 加密函數的運行速度

unsigned long EncryptionTime(unsigned long Times);

// 線性密碼分析

BlockType LinearCryptanalysis(unsigned long T,BlockType Text[][2]);

// 差分密碼分析

BlockType DiffCryptanalysis(unsigned long T,BlockType Text[][4]);

// 測試分組加密與解密

void TestBlockEncrypt();

// 測試文件加密與解密

void TestFileEncrypt();

// 測試運行速度

void TestEncryptionTime();

// 測試線性密碼分析

void TestLinearCryptanalysis();

// 測試差分密碼分析

void TestDiffCryptanalysis();

// 測試線性分析函數成功時明密文對數

void TestLinearSucceedTimes();

// 測試差分分析函數成功時明密文對數

void TestDiffSucceedTimes();

// 暫停,按回車鍵繼續

void Wait();

測試程序只需打開生成的可執行文件,按提示操做便可。

運行截圖以下:

任意輸入一個小於 65536 

參考文檔和完整的文檔和源碼下載地址:

https://www.write-bug.com/article/1306.html

相關文章
相關標籤/搜索