freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

信息安全技術課程設計-常用密碼算法的設計與實踐(編輯修改稿)

2024-08-31 14:32 本頁面
 

【文章內容簡介】 大素數(shù)計算相應的密鑰,這里的密鑰包括 公鑰 e,私鑰 d 以及模 n。 將生成的密鑰導出存在一個文本文檔中,以便使用。 然后 選擇所需要加密或解密的文件,系統(tǒng)根據(jù)文件的類型自動分配加密或解密的算法對其進行操作。 在進行加密或解密操作時算法是較為類似的,都是進行了一個模運算的操作, 只是計算的系數(shù)有所不同, 加密時的系數(shù)為公鑰 e,而解密時用的則是私鑰 d。因此在設計 RSA 算法時只需要編寫一個函數(shù) ,在程序調用此函數(shù)時傳不同的參數(shù)即可實現(xiàn)加密與解密的功能。 ( 3) 混合加密設計 混合加密算法利用了兩種加密算法對文件進行加密,該算法的主要思想如下: 首先,通過素數(shù)的生成算法,得到兩個大的素數(shù) p 和 q, 利用 RSA 加密算法中密鑰生成算法,生成一把公開密鑰和私有密鑰,其中將 rsa 公鑰通過某種方式公布出去,而把 RSA 私鑰保存。然后,通過線性同余法產生一個 64 位的隨機數(shù)作為 DES 的會話密鑰,對明文進行 DES 加密和解 密。 最后,是利用 RSA的公鑰對會話密鑰進行 RSA 加密 , 并將會話密鑰進行加密保存,并與 DES 加密后的密文合并。接收方對傳送過來的密文用 RSA 生成的私鑰進行解密。 ( 4) 功能函數(shù)的定義 a) DES 算法部分 關鍵函數(shù) ① . 標準 DES 加密 /解密函數(shù) static void SDES(char Out[8], char In[8], const PSubKey pSubKey, bool Type)。 第 13 頁,共 31 頁 函數(shù)共帶有四個形參, Out[8]為輸出字符串, In[8]為輸入字符串, pSubKey為密鑰, Type 是用來判斷調用標準加(解)密函數(shù)時是為了加密還是解密。 ② . 設置密鑰函數(shù) static void SetKey(const char* Key, int len)。 函數(shù)共有兩個形參, Key 表示初始密鑰, len 表示密鑰的長度。 ③ . 設置子密鑰函數(shù) static void SetSubKey(PSubKey pSubKey, const char Key[8])。 函數(shù)共有兩個參數(shù), pSubKey 是 PSubKey 類型的密鑰, Key[8]是用于一個分組中的密鑰。值得說明的是 PSubKey 類型是之前在程序中以結構體形式定義的 bool 類型的數(shù)據(jù)類型,其目的用于規(guī)定標準密鑰的長度。 ④ . 查表變換函數(shù) static void Transform(bool *Out, bool *In, const char *Table, int len)。 函數(shù)共有四個形參,分別為查表前的輸入 bool *In、查表后的輸出 bool *Out、選擇的表 const char *Table 以及返回值長度 int len。 b) RSA 算法部分 ① . 獲取隨即大素數(shù)函數(shù) GetPrime(BigInt amp。P,UINT len) 函數(shù)有兩個參數(shù),分別為大數(shù) P,以及大數(shù)的長度。 ② . RSA 加密函數(shù) Encrypt(char *Out,char *In,UINT len,char *KeyStr,char *ModStr) 函數(shù)共有五個參數(shù),分別為輸出加密后的結果 Out,輸入加密前的文件 In,加密文件的長度 len,密鑰 Key 以及模 n 的值 n。 ③ . RSA 解密函數(shù) Decrypt(char *Out,char *In,UINT len,char *KeyStr,char *ModStr) {return Encrypt(Out,In,len,KeyStr,ModStr)。} RSA 解密函數(shù)的參數(shù)與加密函數(shù)的參數(shù)完全相同,且返回值為加密函數(shù)的返回值。 c) 混合加密算法部分 ① . 加密函數(shù) Encrypt(char *OutFile,char *InFile,char *RsaKeyStr,char *RsaModStr,bool 第 14 頁,共 31 頁 Is3DES=0) 函數(shù)共有五個參數(shù),分別為加密后的輸出文件 OutFile,加密前的輸入文件InFile,加密時 RSA 的密鑰 Key,模 n 的值以及是否選擇三重 DES 加密 。 ② . 解密函數(shù) Decrypt(char *OutFile,char *InFile,char *RsaKeyStr,char *RsaModStr) 函數(shù)共有四個參數(shù),與加密函數(shù)的前四個參數(shù)完全相同,分別為加密后的輸出文件 OutFile,加密前的輸入文件 InFile,加密時 RSA的密鑰 Key 以及模 n 的值。 文件操作模塊 a) 文件讀取模塊 文件讀取模塊主要是將文件中的內容讀入字符數(shù)組中,由于系統(tǒng)的加密和解密功能是基于數(shù)組進行操作的,因此在將文件中的內容讀入數(shù)組時就已經(jīng)做好了加密的準備。 文件讀取模塊包含兩方面的內容,一是需要獲取文件的路徑,而是要實現(xiàn)將文件中的內容讀入 Edit 控件 以及 數(shù)組中。 b) 文件存儲模塊 文件存儲模塊主要是將加密或是解密的結果寫入文件,這里為了實現(xiàn)分組密碼體質的思想,用的是 MFC 中 CFile 類 的文件讀入讀出標準函數(shù),它的好處是有一個特定的文件指針,在讀入一個分組后指針自動移向下一個分組的開頭。 文件存儲模塊的功能主要包含兩部分,一部分是新建一個用于存放結果的文本文檔,另一部分是將數(shù)據(jù)寫入這個文本文檔。 幫助模塊 幫助模塊主要是為使用系統(tǒng)的 用戶提供算法原理的介紹,運用了 MFC 中的樹控件進行設計。 編碼 DES 核心算法模塊的實現(xiàn) a) 模塊初始化 模塊的初始化主要包含一些算法中常量定義,即初始 IP 置換表、逆初始 IP置換表、選擇置換 PC1 表、選擇置換 PC2 表、為選擇函數(shù) E、置換函數(shù) P 以 第 15 頁,共 31 頁 及 S 盒。這些常量的定義如下 b) 功能函數(shù)的實現(xiàn) ① . 標準 DES 加(解)密函數(shù) 標準 DES 加(解)密函數(shù)是 DES 核心算法的主體,對數(shù)據(jù)或文件的加密、解密過程都需要調用這個函數(shù)對字符串或文件進行處理。 首先再次給出標準加(解)密函數(shù)的定義: void SDES(char Out[8], char In[8], const PSubKey pSubKey, bool Type) 需要說明的是 PSubKey 是之前定義的 bool 類型的一個數(shù)據(jù)類型,即typedef bool (*PSubKey)[16][48],它的是為了控制密鑰的位數(shù)而定義的。 Type的取值范圍只有兩種可能,即 ENCRYPT, DECRYPT,分別代表加密和解密, ENCRYPT, DECRYPT 是之前用枚舉法 enum 所限定的取值范圍。 其次,函數(shù)主要的實現(xiàn)功能是為了實現(xiàn)對數(shù)據(jù)和文件進行加密,即調用DES 類中的各類函數(shù)代碼。首先需要對輸入明文或密文進行位 轉化,調用ByteToBit()函數(shù), ByteToBit()函數(shù)的目的是將文件中的字符串進行轉化,轉成可以進行數(shù)組操作的二進制類型。然后按照圖 的 DES 加密算法對其進行操作。以下是程序的關鍵代碼及注釋: 定義相關數(shù)據(jù), M 位明文字符串, tmp 位中間變量, Li 和 Ri 分別代表明文的左右兩部分: static bool M[64], tmp[32], *Li=amp。M[0], *Ri=amp。M[32]。 調用 ByteToBit 進行位轉化: ByteToBit(M, In, 64)。 初始 IP 置換: Transform(M, M, IP_Table, 64)。 判斷操作類型,用 Type 取其對應的變量,用 if 語句進行判斷: if( Type == ENCRYPT ) //進行加密 { …… //加密代碼 } Else //進行解密,此時 Type 取 DECRYPT { 第 16 頁,共 31 頁 …… //解密代碼 } 其中加密代碼如下: F_func(Ri, (*pSubKey)[i])。 //F 函數(shù) Xor(Ri, Li, 32)。 //異或操作 此代碼進行 16 次迭代,用 for 循環(huán)實現(xiàn)迭代功能。 與加密過程相同 DES 的解密也同樣進行以上兩個操作,唯一不同的地方是函數(shù)中的參數(shù)不同, F 函數(shù)是對密文的左半邊進行操作,異或函數(shù)的兩個參數(shù)正好相反,其代碼如下: F_func(Li, (*pSubKey)[i])。 //F 函數(shù) Xor(Li, Ri, 32)。 //異或操作 解密過程也需要進行 16 次迭代,用 for 循環(huán)實現(xiàn)。 至此完成了全部標準 DES 加(解)密函數(shù)的編寫,需要指出的是該函數(shù)在調用過程中需要調用到類似 Xor 異或操作的小函數(shù),這些函數(shù)是實現(xiàn)在DES 類中編譯好的,由于函數(shù)較多,在此就不一一贅述了,以下挑選一些較為關鍵的進行簡單描述。 ② . 設置密鑰函數(shù) 該函數(shù)的功能是對用戶輸入的初始密鑰進行操作,其代碼和注釋如下: 首先將實現(xiàn)定義的密鑰接口 deskey 數(shù)組初始化,這里選用 memset 庫 函數(shù) 進行操作: memset(deskey, 0, 16)。 其次將密鑰的值賦到 deskey 數(shù)組中,由于密鑰的長度不確定,因此這里考慮用 memcpy 庫函數(shù)進行操作,它的優(yōu)點是可以對變量指定長度賦值: memcpy(deskey, Key, len16?16:len)。 最后就可以對密鑰進行操作,調用設置子密鑰函數(shù): SetSubKey(amp。SubKey[0], amp。deskey[0])。 ③ .
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1