MD5是一種不可逆的加密算法,目前是最牢靠的加密算法之一,尚沒有能夠逆運算的程序被開發出來,它對應任何字符串都可以加密成一段唯一的固定長度的代碼。
SHA1是由NISTNSA設計為同DSA一起使用的,它對長度小於264的輸入,產生長度為160bit的散列值,因此抗窮舉(brute-force)性更好。
HMAC_SHA1
一直以為HMAC_SHA1和SHA1沒有任何區別,直到現在才發現它倆不是完全一樣的。
HMAC的百度百科解釋:
“HMAC是密鑰相關的哈希運算消息認證碼(Hash-based Message Authentication Code),HMAC運算利用哈希算法,以一個密鑰和一個消息為輸入,生成一個消息摘要作為輸出。”
可以看出,HMAC是需要一個密鑰的。所以,HMAC_SHA1也是需要一個密鑰的,而SHA1不需要。
/** * 生成userkey * @param $userId * @return string */ public static function createUserKey($userId) { //cookie算法使用先hmac-sha1,再base64 $curTime = time(); $strToSign = $userId . ',' . $curTime; //hmac-sha1 $secretkey = config('constants.AUTH_SECRET_KEY'); // $userkey = base64_encode(hash_hmac("sha1", $strToSign, $secretkey)); return $userkey; }
參考:https://www.cnblogs.com/fireway/p/5860622.html