維吉尼亞的加解密有兩種方法。
第一種是查表:第一行為明文,第一列為金鑰,剩餘的為對應的密文
第二種方法是轉化計算法:逐個將字元轉化為從零開始的數字,對數字進行加密/解密後,再轉化為字元。
核心**如下:
//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出的學期報告題目是 查詢最有效的二進位制編碼。由於無法證明哪個已有編碼是最有效的,霍夫曼放棄對已有編碼的研究,轉向新的探索,最終發現了基於有序頻率二叉樹編碼的想法,...