密碼的儲存用哪一種演算法?

密碼的儲存用哪一種演算法?

Image result for password encryption

您選對了嗎? 密碼儲存的演算法, MD5, SHA, PBKDF2, BCrypt

這邊文章主要說明密碼的儲存要用哪一種加密演算法儲存?

各種演算法的優缺點? 業界與相關標準的建議

MD5

這是目前業界算是禁止使用的演算法

優點是快速 , 但是卻很快就會被破解, 只有128bit

除此之外, 該演算法很容易產生  collision

也就是說計算出來的 Hash值有可能重複

密碼 Hash的儲存通常會加上一個隨機數 (Salt)的方式當作參數

Hash = (password, 隨機數 Salt)

這樣一來, 駭客才無法用字典檔案產生一組 Hash來猜出原始密碼

SHA

SHA1 也被認定為弱演算法, 因此業界普遍使用SHA256

  • SHA-1 (Simplest one – 160 bits Hash)
  • SHA-256 (Stronger than SHA-1 – 256 bits Hash)
  • SHA-384 (Stronger than SHA-256 – 384 bits Hash)
  • SHA-512 (Stronger than SHA-384 – 512 bits Hash)

但是密碼儲存我們也通常不會使用 SHA的方式

密碼的儲存主要使用的演算法是 PBKDF2, BCrypt, Script

PBKDF2, BCrypt , Scrypt的出現

這三個是目前業界普遍使用來儲存密碼的 Hash演算法

PBKDF2, BCrypt, Script有一個共通的特色,

就是讓電腦執行速度變得很慢

因此, 這樣的演算法有助於防止暴力破解

哪一個演算法比較推薦呢?

由於美國 NIST 與FIPS標準推薦使用 PBKDF2

因此, 也讓 PBKDF2 更為有公信力

倒不是因為其他兩個演算法比較弱或是有被找到漏洞

所以如果您的密碼儲存演算法不是這三個其中之一的話

要好好跟開發團隊討論討論囉.

演算法比較

 

相關標準: PBKDF2

 

參考

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *