922 字
5 分鐘
[背景知識] 密碼雜湊函數 | 自然人憑證開發筆記
2024-01-29
無標籤

首頁 > 系列文 > 自然人憑證開發筆記


密碼雜湊函數(Cryptographic Hash Function)是一種特殊的數學函數,它將輸入的任意大小的數據轉換成固定大小的固定長度的雜湊值。通常在做資料加密或簽章前,會先經過雜湊函數運算。

密碼雜湊函數具有以下特點:

  • 固定長度的輸出: 不管輸入的資料大小如何,密碼雜湊函數的輸出都是固定長度的。
  • 單向性(One-way): 雜湊函數是單向的,即容易計算給定輸入的雜湊值,但很難從雜湊值反向計算出原始輸入。
  • 相同輸入產生相同的雜湊值: 對於相同的輸入,密碼雜湊函數始終生成相同的雜湊值。
  • 碰撞阻力: 理想的密碼雜湊函數應該是碰撞阻力的,即不同的輸入應該產生不同的雜湊值,並且很難找到兩個不同的輸入產生相同的雜湊值。

密碼雜湊函數在許多安全應用中都有廣泛的應用,包括存儲用戶密碼、數位簽名、消息驗證碼等。一些常見的密碼雜湊函數包括 SHA-1、SHA-2、SHA-3、MD5等。

在存儲密碼的情況下,通常會將使用者的密碼進行雜湊,並將雜湊值儲存在資料庫中。當使用者登入時,系統會對輸入的密碼進行雜湊,並將雜湊值與儲存的雜湊值進行比較,而不存儲實際的明文密碼。這有助於保護使用者密碼在資料儲存中的安全。更多資訊參考維基百科:密碼雜湊函數

擷取自 https://zh.wikipedia.org/wiki/%E5%AF%86%E7%A2%BC%E9%9B%9C%E6%B9%8A%E5%87%BD%E6%95%B8

擷取自 https://zh.wikipedia.org/wiki/%E5%AF%86%E7%A2%BC%E9%9B%9C%E6%B9%8A%E5%87%BD%E6%95%B8


常見的雜湊函數#

SHA-1#

SHA-1(Secure Hash Algorithm 1)是一種設計於1993年的安全雜湊函數。雖然曾經廣泛應用於數字簽名、資料完整性校驗等領域,但由於存在碰撞風險,即不同輸入可能產生相同雜湊值,因此現在不再建議用於安全性要求較高的應用。近年來,許多安全專家和標準機構推薦使用更安全的雜湊函數,如SHA-256或SHA-3。

SHA-2#

SHA-2(Secure Hash Algorithm 2)是一系列安全雜湊函數,包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256。它們分別生成224、256、384、512位的固定長度雜湊值。SHA-2 目前被視為相對安全且不易受到攻擊的雜湊演算法。相較於SHA-1,SHA-2 提供更大的雜湊位元,增強了防碰撞和安全性。

SHA-3#

SHA-3(Secure Hash Algorithm 3)是美國國家標準技術研究所(NIST)於2015年發布的新一代安全雜湊函數。它使用搖晃(shake)構造,具有較高的靈活性,可生成不同位元數的雜湊值。SHA-3 的目標是提供一種安全且抗量子計算攻擊的雜湊算法。它包括SHAKE128、SHAKE256,以及固定長度的雜湊函數,如SHA3–224、SHA3–256、SHA3–384、SHA3–512等。SHA-3在各種應用中提供可靠的資料完整性和安全性。

MD5#

MD5(Message Digest Algorithm 5)是一種常見的數據雜湊函數,產生128位元的固定長度雜湊值。由於MD5容易受到碰撞攻擊,不再建議用於安全應用。

RIPEMD#

RIPEMD(RACE Integrity Primitives Evaluation Message Digest)是一系列資料雜湊函數,包括 RIPEMD-128、RIPEMD-160、RIPEMD-256、和RIPEMD-320。由歐洲研究實驗室於1996年設計,主要用於資料完整性校驗和安全應用。RIPEMD-160 是最廣泛使用的版本,產生160位的雜湊值。然而,由於安全性考量,一些專家建議在新應用中使用更現代、安全的雜湊函數,如 SHA-256 或 SHA-3。