如何使用JavaScript的bcrypt庫
了解如何使用bcrypt庫在JavaScript中加密和驗證密碼
bcrypt是JavaScript中最常用的用於處理密碼的npm包之一。
這是基本的安全知識,但對於新手開發人員來說值得一提:您永遠不應該以明文形式在數據庫或其他地方存儲密碼。絕對不行。
相反,您需要從密碼中生成一個哈希值,然後將其存儲。
使用方法如下:
1 | import bcrypt from 'bcrypt' |
您需要將一個數字作為第二個參數傳遞,該數字越大,哈希值就越安全,但生成的時間也越長。
該庫的README文件告訴我們,在2GHz核心上,我們可以生成:
1 | rounds=8 : ~40 hashes/sec |
如果您多次運行bcrypt.hash()
,其結果將會保持變化。這是非常重要的,因為無法從哈希值中重構出原始密碼。
如果給定相同的密碼和哈希值,有可能使用bcrypt.compare()
函數檢查哈希值是否是從該密碼生成的:
1 | bcrypt.compare(password, hash, (err, res) => { |
如果匹配,則密碼與哈希值相符,例如我們可以讓用戶成功登錄。
您也可以使用基於Promise的API來使用bcrypt庫,而不是回調函數:
1 | const hashPassword = async () => { |
在此Glitch中檢查一些示例:
tags: [“JavaScript”, “bcrypt”, “password hashing”, “security”]