原始碼和文件分享 基於C 的分組密碼加解密實現

2021-09-27 11:09:54 字數 1630 閱讀 3240

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();

測試程式只需開啟生成的可執行檔案,按提示操作即可。

執行截圖如下:

原始碼和文件分享 基於C 的分組密碼加解密實現

程式完成課程設計所有必做與選做的要求,包含的函式如下 s 盒置換blocktype sbox encode blocktype x s 盒逆變換blocktype sbox decode blocktype x p 盒置換blocktype pbox encode blocktype x p 盒逆變...

原始碼和文件分享 基於C 的教室管理系統

1 需求分析 核心需求 實現教室管理系統,完成對學校教室的維護 查詢 預約 統計功能。程式擁有許可權控制,分為管理員和普通使用者 管理員需求 檢視某棟樓教室的概要資訊 每個教室的詳細資訊 包括教室基本資訊 預約情況 上課情況 修改某教室基本資訊 增加教室 刪除教室 增加某教室上課情況 統計某類教室的...

原始碼和文件分享 基於swift的詞法分析程式

計算正則式 讀入正規表示式 對正規表示式處理 建圖 生成 nfa 將 nfa 去除空節點 轉化為 nfa 將 nfa 轉化為 dfa 對 dfa 圖進行遍歷每個節點,獲取到每個節點通過某個字元到達哪下乙個狀態,並找到終態 構造 dfa 表 輸出顯示 驗證字串 在成功通過正規表示式構建 dfa 圖的基...