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

2021-09-05 09:53:55 字數 1737 閱讀 5292

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...