如何解決PHP雜湊函式的碰撞

2021-07-02 04:14:35 字數 688 閱讀 5023

最近想使用hash函式來根據乙個字串來生成乙個惟一的值,但是沒找到好用的hash函式,像php內建的md5、sha等雜湊函式生成的值太長,我沒法用,想擷取,這樣做又擔心會出現雜湊碰撞,特來拜求高人們用的是什麼雜湊函式

雖然說採用什麼雜湊演算法要看資料而定,但連md5再嫌長,可真的有些難辦了。其實我很想聽聽為什麼「雜湊函式生成的值太長,我沒法用」。如果是沒有任何評估,單憑感覺就這麼說,那真的太過分了。

你可能需要的不是乙個低衝撞的雜湊演算法,而是將雜湊演算法的輸出壓縮的字串壓縮演算法。由於雜湊演算法輸出的字符集不過16個,而ascii的顯示字元扣掉空格也剩94個,所以單從壓縮字串長度來看,這個想法應該能夠讓你滿意。

輸出變短(也就是雜湊值的取值空間變小)必然增加雜湊碰撞概率,不要有任何不切實際的幻想。也就是說,無論你的演算法是什麼,只要範圍等同的減小,雜湊碰撞的概率就會等同的增大。所以如果真的需要短輸出的雜湊函式,也就不必再費盡心思去找,擷取這個辦法已經足夠有效了。

標題起的也不好。雜湊碰撞的出現是必然的,「解決」雜湊碰撞本身就不存在。

雜湊碰撞雖然是小概率事件,但絕對不能怕,更不能躲,尤其不能當作「不存在」。一定要根據應用的需求,有明確的方法對待之。我的建議,要麼加長雜湊演算法的取值空間,要麼增加其他的比較特徵,作為在雜湊演算法之外額外的補充。

如何解決雜湊衝突

就不自己寫了,直接貼下吧 看了concurrenthashmap的實現,使用的是拉鍊法.雖然我們不希望發生衝突,但實際上發生衝突的可能性仍是存在的。當關鍵字值域遠大於雜湊表的長度,而且事先並不知道關鍵字的具體取值時。衝突就難免會發 生。另外,當關鍵字的實際取值大於雜湊表的長度時,而且表中已裝滿了記錄...

c 雜湊表 C 雜湊表是如何解決衝突的

開放定址是其中一種緩解雜湊衝突的程式設計技術,當使用開放定址作為衝突解決技術時,鍵值對儲存在表 陣列 中,而不是像單獨鍊錶那樣的資料結構中。這意味著我們需要時刻留意雜湊表的尺寸以及當前表中已有的元素數量。因為一旦雜湊表中有太多元素,也將很難找到可用的位置來存放我們新插入的元素,因此這裡我們需要引入乙...

php的雜湊函式

雜湊函式 echo password hash rasmuslerdorf password default n 驗證函式 boolean password verify string password,string hash 比如if password verify rasmuslerdorf h...