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

正文內(nèi)容

一款經(jīng)典加密解密教學演示軟件的開發(fā)畢業(yè)設計(編輯修改稿)

2024-08-24 18:46 本頁面
 

【文章內(nèi)容簡介】 算 法概述 Vigenere 加密法不同于上面的兩種加密法,它是一個著名的多碼加密法。 Vigenere 加密法是基于關鍵詞的加密系統(tǒng),但不是像單碼關鍵詞加法那樣使用關鍵詞來定義替換模式的。 Vigenere 加密法,關鍵詞寫在明文的上面,并且不斷重復書寫,這樣每個明文字母都與一個關鍵詞的字母關聯(lián),例如,關鍵詞為“ make”,而明文為“ tangyang”的情況下,關聯(lián)詞 明文的關聯(lián)如下所示 : 表 密文、明文對照表 m a k e m a k e t a n g y a n g 利用如圖 所示的 Vigenere 表 ,這些字母對就可以用來確定明文字符的加密結(jié)果。用密鑰字母確定表的行,而明文字母確定表的列,表中行列交叉處的字母就是用來替代明文字母的密文字母 。 表 vigenere 表 a b c d e f g h i j k l m n o p q r s t u v w x y z a a b c d e f g h i j k l m n o p q r s t u v w x y z b b c d e f g h i j k l m n o p q r s t u v w x y z a c c d e f g h i j k l m n o p q r s t u v w x y z a b d d e f g h i j k l m n o p q r s t u v w x y z a b c e e f g h i j k l m n o p q r s t u v w x y z a b c d f f g h i j k l m n o p q r s t u v w x y z a b c d e g g h i j k l m n o p q r s t u v w x y z a b c d e f h h i j k l m n o p q r s t u v w x y z a b c d e f g i i j k l m n o p q r s t u v w x y z a b c d e f g h j j k l m n o p q r s t u v w x y z a b c d e f g h i k k l m n o p q r s t u v w x y z a b c d e f g h i j l l m n o p q r s t u v w x y z a b c d e f g h i j k m m n o p q r s t u v w x y z a b c d e f g h i j k l n n o p q r s t u v w x y z a b c d e f g h i j k l m o o p q r s t u v w x y z a b c d e f g h i j k l m n p p q r s t u v w x y z a b c d e f g h i j k l m n o q q r s t u v w x y z a b c d e f g h i j k l m n o p r r s t u v w x y z a b c d e f g h i j k l m n o p q s s t u v w x y z a b c d e f g h i j k l m n o p q r t t u v w x y z a b c d e f g h i j k l m n o p q r s u u v w x y z a b c d e f g h i j k l m n o p q r s t v v w x y z a b c d e f g h i j k l m n o p q r s t u w w x y z a b c d e f g h i j k l m n o p q r s t u v x x y z a b c d e f g h i j k l m n o p q r s t u v w y y z a b c d e f g h i j k l m n o p q r s t u v w x z z a b c d e f g h i j k l m n o p q r s t u v w x y 陜西理工學院畢業(yè)設計 第 8 頁 共 45 頁 算法分析 在關鍵詞為“ make”,而明文為“ tangyang”的情況下,關聯(lián)詞 明文的關聯(lián)如下: 表 明文、密文對照表 密鑰 m a k e m a k e 明文 t a n g y a n g 加密過程:用密鑰字母確定表的行,而明文字母確定表的列,表中行列交叉處的字母就是用來替代明文字母的密文。對照 Vigenere 表查找密文分析結(jié)果如下: 大寫字母處理:首先將大寫字母轉(zhuǎn)換成小寫字母,找到其密 文后再將其轉(zhuǎn)換成對應的小寫字母。 在 Vigenere 表中查找“ m”列和“ t”行,找到結(jié)果密文字母“ f”,重復這個過程,可以生成以下的密文: 表 加密后的明文、密文對照表 密鑰 m a k e m a k e 明文 t a n g y a n g 密文 f a x k k a x k 則明文“ tangyang”在關鍵詞為“ make”時,密文為“ faxkkaxk”。 解密過程:要破譯 Vigenere 加密法,需要顛倒該查找過程。利用密鑰和密文對,在 Vigenere中確定相應的明文。要實現(xiàn)這些 ,找到由密鑰確定的行,掃描該行,直到找到密文字母,該密文字母所在列的第一個字母就是明文字母。 例如將上述密文“ faxkkaxk”解密。在 Vigenere 表中查找“ m”行中“ f”的位置所對列的第一個字母,找到結(jié)果明文字母“ t”,重復這個過程,則密文“ faxhkaxh”解密后為“ tangyang”。 核心代碼 //加密函數(shù) void CVienerePasswd::getPassKey(CString text,char *result,int len) //構(gòu)建與明文字符長度相同 的密鑰數(shù)組 { int N = len / ()。 //text 為密鑰, result 返回的結(jié)果, len 明文長度 int M = len % ()。 char *strText = (())。 (())。 strcpy(result,strText)。 for (int i = 1。 i N。 i++) { strcat(result,strText)。 } if (M == 0) return。 else { strcat(result,strText)。 } } CString CVienerePasswd::VIGAddPass(CString newText,CString passKey) { int i = 26,j = 26,k。 陜西理工學院畢業(yè)設計 第 9 頁 共 45 頁 int flag = 0。 char chi,chj。 CString result。 int textLen = ()。 obvious = (textLen)。 Passwd = new char[textLen]。 (textLen)。 char *chPassKey = new char[textLen]。 getPassKey(passKey,chPassKey,textLen)。 for (k = 0。 k textLen。 k++) { if (chPassKey[k] 64 amp。amp。 chPassKey[k] 91) //處理大寫字母 { chi = chPassKey[k] + 32。 //大寫字母轉(zhuǎn)換為小寫字母 } else chi = chPassKey[k]。 if (obvious[k] 64 amp。amp。 obvious[k] 91) { flag = 1。 chj = obvious[k] + 32。 } else chj = obvious[k]。 i = getPassNum(chi)。 j = getPassNum(chj)。 if (j == 26 || i == 26) { Passwd[k] = obvious[k]。 } else { if (flag == 1) { Passwd[k] = ArrayKey[i][j] 32。 flag = 0。 } else Passwd[k] = ArrayKey[i][j]。 } } Passwd[k] = 39。\039。 (%s,Passwd)。 return result。 } int CVienerePasswd::getPassNum(char ch) 陜西理工學院畢業(yè)設計 第 10 頁 共 45 頁 { for (int i = 0。 i 26。 i++) { if (ArrayNum[i] == ch) return i。 } return 26。 } //解密函數(shù) CString CVienerePasswd::VIGRelessPass(CString oldText,CString passKey) { int flag = 0。 int i = 26, j = 26, k, t。 char chi,chj。 CString result。 int textLen = ()。 Passwd = (textLen)。 obvious = new char[textLen]。 (textLen)。 char *chPassKey = new char[textLen]。 getPassKey(passKey,chPassKey,textLen)。 for (k = 0。 k textLen。 k++) { if (chPassKey[k] 64 amp。amp。 chPassKey[k] 91) { chi = chPassKey[k] + 32。 } else chi = chPassKey[k]。 if (Passwd[k] 64 amp。amp。 Passwd[k] 91) { flag = 1。 chj = Passwd[k] + 32。 } else chj = Passwd[k]。 i = getPassNum(chi)。 for (t = 0。 t 26。 t++) { if (ArrayKey[i][t] == chj) break。 } if (t == 26) { obvious[k] = Passwd[k]。 } 陜西理工學院畢業(yè)設計 第 11 頁 共 45 頁 else { if (flag == 1) { obvious[k] = ArrayNum[t] 32。 flag = 0。 } else obvious[k] = ArrayNum[t]。 } } obvious[k] = 39。\039。 (%s,obvious)。 return result。 } 陜西理工學院畢業(yè)設計 第 12 頁 共 45 頁 5 Hill 加密法 算法概述 Hill 加密法是經(jīng)典多圖加密法的一種,要成功使用多圖加密法,需要將數(shù)學方法應用到密碼學中去, Hill 提出了一種基于聯(lián)立方程的加密算法。該加密算法將含有 m 個字母的明文塊加密成含有 m個字母的密文塊。每個明文字母被賦予一個數(shù)值 ,通常是 a=0,b=1,? ,z=25,但 Hill 使用的是隨機賦值,塊中每個字母的數(shù)值一起用來生成一組新的數(shù)值,這些數(shù)值就用來表示密文字母。例如,如果 m=3,那么 3 個明文字母的數(shù)值(假設為 p1,p2 和 p3)將通過如下的方程組轉(zhuǎn)換成密文數(shù)值 c1,c2和 c3: 26m o d)(c 3132121111 pkpkpk ??? 26m o d)(c 3232221212 pkpkpk ??? 26m o d)(c 3332321313 pkpkpk ??? 該加密法的密鑰是 kij值,取模操作的意思是將和除以 26,得余數(shù)。 確定密鑰后將明文字母轉(zhuǎn)換成數(shù)字形式,帶入以上方 程組,解方程組,得出密文的數(shù)值。再將這些數(shù)值轉(zhuǎn)換回字母后,就得到其密文。 由于傳統(tǒng)的 Hill 加密算法只對 26 個字母進行加密,為了解決這一局限,對常用符號也能進行加密,從而采用 ASCII 碼表作為加密參考,將模改為 95(注: ASCII 碼值有 128 個,由于前 33 個為不可顯示字符
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1