Vigen re Cipher 維吉尼亞加解密演算法

2022-05-19 14:59:25 字數 1025 閱讀 6881

維吉尼亞的加解密有兩種方法。

第一種是查表:第一行為明文,第一列為金鑰,剩餘的為對應的密文

第二種方法是轉化計算法:逐個將字元轉化為從零開始的數字,對數字進行加密/解密後,再轉化為字元。

核心**如下:

//

cipher.h 額外新增的檔案,用來放置相關演算法,此檔案獨立於mfc外,可直接移植到支援cstring的專案中

int*cstringtoint(cstring str)

return

asc_space;

}void encode(cstring key,cstring plain,cstring &cipher)

cipher.setat(i,'\0

'); //在末尾

放入\0

delete keycode,plaincode,ciphercode;//

釋放cstringtoint()申請的空間

}void decode(cstring key,cstring &plain,cstring cipher)

plain.setat(i,'\0

');delete keycode,plaincode,ciphercode;

}

//mfc onbutton()響應

void cvigenerecipherdlg::onencrypt() //

加密按鈕

}void cvigenerecipherdlg::ondecrypt() //

解密按鈕

}

測試結果如下圖:

哈弗曼編碼 哈弗曼樹

哈弗曼編碼是依賴於字元使用頻率來建立的一種編碼,通過把使用頻率低的字元分配相對較多的01編碼,而使用頻率高的分配相對較低的01編碼,來建立最小的帶權路徑長度的樹,來最大化的獲得編碼儲存空間的一種編碼規則。這個樹稱為哈弗曼樹,也稱為最優二叉樹。這樣可以確定每乙個字元的編碼不可能成為其他字元編碼的坐子串...

吉格勒定理

概念 吉格勒定理 1.是什麼 設定高目標就等於達到了目標的一部分。這就是管理界赫赫有名的吉格勒定理,其旨在告訴管理者,成功始於乙個高的目標,因為有目標就會有達到目標的動力,那些一事無成的人,往往就是因為缺少雄心勃勃 排除萬難 邁向成功的動力,而不敢為自己制定高遠的奮鬥目標。2.為什麼 開始時心中就懷...

哈弗曼樹與哈弗曼編碼(實現)

歷史背景 1951年,霍夫曼在mit攻讀博士學位,他和修讀資訊理論課程的同學得選擇是完成學期報告還是期末考試。導師robert fano出的學期報告題目是 查詢最有效的二進位制編碼。由於無法證明哪個已有編碼是最有效的,霍夫曼放棄對已有編碼的研究,轉向新的探索,最終發現了基於有序頻率二叉樹編碼的想法,...