使用bcrypt進行加密的簡單實現


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加密密碼計算強度代表什么意思

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM