MD5 SHA1 HMAC HMAC_SHA1區別


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM