隨機函式用於加密,前面已經介紹了組合法、跳變法、重排法、多模法,這裡再介紹一種方法:加鹽法。
加鹽法的最大特色是增加加密強度,它是一種動態方法。經過加鹽處理可以做到,即使用同樣的明文、同樣的使用者密碼每次加密得到的密文都不一樣,密碼、明文、密文沒有固定的對應關係這樣當然不好分析了。
下面介紹如何加鹽,所謂鹽也是隨機數,怎麼獲得鹽?作為鹽的隨機數可以讓程式讀取時間流而得到,如果需要多個可以擷取時間流得到乙個數值,用此數值做種子啟用隨機函式得到多個隨機數。
有了鹽怎麼用?很簡單,用隨機函式加密需要生成隨機序列作為金鑰陣列,生成金鑰陣列的函式種子一般都是動態的隨使用者密碼而變化的,現在讓得到的鹽參與種子的運算,也就是鹽和使用者密碼共同決定函式種子的數值,這樣加鹽就完成了。有額外的東西決定種子的數值,當然同樣的明文、同樣的使用者密碼能得到不同的結果了,因為鹽不一樣,但是鹽過於簡單是有可能一樣的,所以鹽的取值大些益處多多。由於加鹽只是參與隨機函式種子的計算所以這樣加鹽不影響加密解密的處理速度。但由於加鹽是程式的自動行為不可能對抗窮舉攻擊,對抗窮舉攻擊的最好辦法是增加使用者密碼長度。
解密需要用到和加密一樣的金鑰陣列,那鹽從何得到?我們在加密時用到的鹽需要儲存起來解密時用,你可以將它們放到密文的特定位置裡,但要保證取出後密文其它部分不能有絲毫變化。鹽對破解高手來說不能說沒有用,所以盡可能保護它,例如加密它,因為密文都是亂碼,所以很容易加密它,例如你可以使用使用者密碼算出密文中部的乙個位置,用此位置之後的資料,和鹽做異或運算,解密時再異或回來。方法很多可方便選用。
上面提到鹽參與隨機函式種子計算,這是主要的,除此以外還可以讓它參與其它運算,例如出現在明文或密文加密或解密的算式裡,凡是使用者密碼參與的地方都可以參與,多參與可以提高解密難度,但要注意使用者密碼的安全性和兼顧處理速度。
使用雜湊加鹽法來為密碼加密
如果你需要儲存密碼 比如 使用者的密碼 你要考慮如何保護這些密碼資料,象下面那樣直接將密碼寫入資料庫中是極不安全的,因為任何可以開啟資料庫的人,都將可以直接看到這些密碼。1 原始密碼經雜湊函式計算後得到乙個雜湊值 2 改變原始密碼,雜湊函式計算出的雜湊值也會相應改變 3 同樣的密碼,雜湊值也是相同的...
隨機函式應用於遊戲
檔名稱 okpo.cpp 作 者 王俊銳 完成日期 2016年3月23日 版 本 號 v1.0 問題描述 1 隨機產生乙個1000內的數字,要求使用者猜測這個數字。輸入乙個猜想的數字,判斷是否與產生的隨機數相等,有螢幕顯示結果。並寫出猜了幾次 2 設計乙個程式,用來實現幫助小學生進行算數運算練習,最...
第四周專案3 隨機函式應用於遊戲
問題1 檔名稱 test2.cpp 作 者 劉金石 完成日期 2016年3月17日 版本 號 v1.0 問題描述 系統隨機產生一百以內的四則運算習題 輸入描述 無。輸出描述 輸出結果。include include include using namespace std int main cout ...