Bcrypt百度百科: bcrypt,是一个跨平台的文件加密工具。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。

除了对您的数据进行加密,默认情况下,bcrypt 在删除数据之前将使用随机数据三次覆盖原始输入文件,以阻挠可能会获得您的计算机数据的人恢复数据的尝试。如果您不想使用此功能,可设定禁用此功能。
bcrypt 使用的是布鲁斯·施内尔在1993年发布的 Blowfish 加密算法。具体来说,bcrypt 使用保罗·柯切尔的算法实现。随 bcrypt 一起发布的源代码对原始版本作了略微改动。
 
简单的说,Bcrypt就是一款加密工具,可以比较方便地实现数据的加密工作。下面是使用Bcrypt对数据加密的一个简单的栗子:
 
 var mongoose = require('mongoose');
// 引入bcrypt模块
var bcrypt = require('bcrypt');
// 定义加密密码计算强度
var SALT_WORK_FACTOR = 10; // 连接数据库
mongoose.connect('mongodb://localhost:27017/test') // 定义用户模式
var UserSchema = new mongoose.Schema({
name: {
unique: true,
type: String
},
password: {
unique: true,
type: String
}
},{ collection: "user"}); // 使用pre中间件在用户信息存储前进行密码加密
UserSchema.pre('save', function(next){
var user = this; // 进行加密(加盐)
bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt){
if(err){
return next(err);
}
bcrypt.hash(user.password, salt, function(err, hash){
if(err){
return next(err);
}
user.password = hash;
next();
})
});
}); // 编译模型
var UserBox = mongoose.model('UserBox', UserSchema); // 创建文档对象实例
var user = new UserBox ({
name : "Jack" ,
password : "123456"
}); // 保存用户信息
user.save(function(err, user){
if(err){
console.log(err);
}else{
// 如果保存成功,打印用户密码
console.log("password: " + user.password);
}
})

运行代码,输出结果如下:

可以发现,保存到数据库中的是加密后的密码。

*SALT_WORK_FACTOR 表示密码加密的计算强度,从1级到10级,强度越高,密码越复杂,计算时间也越长。

值得注意的是,强度为1-3时强度太低,系统会默认使用强度为10的计算方式进行加密。如下,相关问题可以参考:

bcrypt加密密码计算强度代表什么意思

最新文章

  1. 设计一个泛型类Collection
  2. 使用WebDriver遇到的那些坑
  3. supervisor(二)event
  4. mysql状态查看 QPS/TPS/缓存命中率查看
  5. 团队项目--站立会议 DAY2
  6. Winform开发框架之权限管理系统改进的经验总结(3)-系统登录黑白名单的实现
  7. jquery一个控件绑定多个事件
  8. gdb之x命令
  9. 如何解决firefox下window.event的问题
  10. 利用Azure高级存储搭建高性能Linux服务器(2)
  11. jQuery中append html后绑定事件不起作用
  12. CentOS mini版安装后增加gcc编译环境
  13. 在CentOS中安装jenkins
  14. Akka(27): Stream:Use case-Connecting Slick-dbStream & Scalaz-stream-fs2
  15. 模拟退火算法实例(c++ 与 c# 实现)
  16. 【效率神奇】Github丧心病狂的9个狠招
  17. Python多重继承顺序---C3算法
  18. DataGridView获取或者设置当前单元格的内容
  19. LOJ 3093: 洛谷 P5323: 「BJOI2019」光线
  20. USB接口案例——多态和转型

热门文章

  1. (centos)linux下访问双系统windows7文件系统
  2. POJ 3281 (最大流+匹配+拆点)
  3. object-c [self class] 和 [self _cmd]
  4. 【BZOJ】1051: [HAOI2006]受欢迎的牛(tarjan)
  5. 面试题中遇到的SQL题目
  6. Java中替换HTML标签的方法代码
  7. select @@identity的用法
  8. HTML练习----注册界面
  9. [排错] Status error 2850
  10. 直接双击运行PowerShell的脚本文件