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加密密码计算强度代表什么意思