1 設計實現
程式完成課程設計所有必做與選做的要求,包含的函式如下:
// s 盒置換
blocktype sbox_encode(blocktype x);
// s 盒逆變換
blocktype sbox_decode(blocktype x);
// p 盒置換
blocktype pbox_encode(blocktype x);
// p 盒逆變換
blocktype pbox_decode(blocktype x);
// 輸出顯示乙個 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
基於C 的分組密碼加解密實現
1 設計實現 程式完成課程設計所有必做與選做的要求,包含的函式如下 s 盒置換 blocktype sbox encode blocktype x s 盒逆變換 blocktype sbox decode blocktype x p 盒置換 blocktype pbox encode blockty...
原始碼和文件分享 基於C 的分組密碼加解密實現
程式完成課程設計所有必做與選做的要求,包含的函式如下 s 盒置換blocktype sbox encode blocktype x s 盒逆變換blocktype sbox decode blocktype x p 盒置換blocktype pbox encode blocktype x p 盒逆變...
原始碼和文件分享 基於C 的分組密碼加解密實現
1 設計實現 程式完成課程設計所有必做與選做的要求,包含的函式如下 s 盒置換 blocktype sbox encode blocktype x s 盒逆變換 blocktype sbox decode blocktype x p 盒置換 blocktype pbox encode blockty...