「怎樣安全存儲用戶密碼」,一個簡易實現

如何安全存儲用戶密碼,在網上已經有很多論述了。對于詳細過程,不再贅述了,不如在此直接拋出經驗。

  1. 明文存儲的,直接槍斃
  2. md5存儲的,蹂躪后再槍斃(五千萬 md5 加密的密碼約等于四千萬明文密碼)
  3. 使用強哈希算法,md5,sha1這些都已經淘汰了
  4. 每個密碼必須加鹽
  5. 必須是隨機鹽,完全不可預測的那種

值得注意的是,千萬不要自己發明輪子,另外在 Python 中,應當使用 bcrypt 這個第三方庫。

下面的 Python 代碼,展示了大概的思路

def encrypt(password, salt=None):
    """加密

    :param password: bytes類型,務必轉換
    """

    if salt is None:
        salt = os.urandom(10)

    h = hmac.new(salt, password, hashlib.sha256)

    return salt + h.digest()

def verify(password, hashed):
    """驗證

    :param password: bytes類型,務必轉換
    """
    
    return encrypt(password, salt=hashed[:10]) == hashed
      
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容