Bcrypt百度百科: bcrypt,是一個跨平台的文件加密工具。由它加密的文件可在所有支持的操作系統和處理器上進行轉移。它的口令必須是8至56個字符,並將在內部被轉化為448位的密鑰。
除了對您的數據進行加密,默認情況下,bcrypt 在刪除數據之前將使用隨機數據三次覆蓋原始輸入文件,以阻撓可能會獲得您的計算機數據的人恢復數據的嘗試。如果您不想使用此功能,可設定禁用此功能。
bcrypt 使用的是布魯斯·施內爾在1993年發布的 Blowfish 加密算法。具體來說,bcrypt 使用保羅·柯切爾的算法實現。隨 bcrypt 一起發布的源代碼對原始版本作了略微改動。
簡單的說,Bcrypt就是一款加密工具,可以比較方便地實現數據的加密工作。下面是使用Bcrypt對數據加密的一個簡單的栗子:
1 var mongoose = require('mongoose'); 2 // 引入bcrypt模塊 3 var bcrypt = require('bcrypt'); 4 // 定義加密密碼計算強度 5 var SALT_WORK_FACTOR = 10; 6 7 // 連接數據庫 8 mongoose.connect('mongodb://localhost:27017/test') 9 10 // 定義用戶模式 11 var UserSchema = new mongoose.Schema({ 12 name: { 13 unique: true, 14 type: String 15 }, 16 password: { 17 unique: true, 18 type: String 19 } 20 },{ collection: "user"}); 21 22 // 使用pre中間件在用戶信息存儲前進行密碼加密 23 UserSchema.pre('save', function(next){ 24 var user = this; 25 26 // 進行加密(加鹽) 27 bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt){ 28 if(err){ 29 return next(err); 30 } 31 bcrypt.hash(user.password, salt, function(err, hash){ 32 if(err){ 33 return next(err); 34 } 35 user.password = hash; 36 next(); 37 }) 38 }); 39 }); 40 41 // 編譯模型 42 var UserBox = mongoose.model('UserBox', UserSchema); 43 44 // 創建文檔對象實例 45 var user = new UserBox ({ 46 name : "Jack" , 47 password : "123456" 48 }); 49 50 // 保存用戶信息 51 user.save(function(err, user){ 52 if(err){ 53 console.log(err); 54 }else{ 55 // 如果保存成功,打印用戶密碼 56 console.log("password: " + user.password); 57 } 58 })
運行代碼,輸出結果如下:

可以發現,保存到數據庫中的是加密后的密碼。
*SALT_WORK_FACTOR 表示密碼加密的計算強度,從1級到10級,強度越高,密碼越復雜,計算時間也越長。
值得注意的是,強度為1-3時強度太低,系統會默認使用強度為10的計算方式進行加密。如下,相關問題可以參考:
bcrypt加密密碼計算強度代表什么意思

