最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Express下采用bcryptjs进行密码加密的方法

来源:懂视网 责编:小采 时间:2020-11-27 22:19:57
文档

Express下采用bcryptjs进行密码加密的方法

Express下采用bcryptjs进行密码加密的方法:前几天利用Express开发了个小项目,开发登录注册模块时,采用bcryptjs进行密码加密,总结了一下内容: bcrypt,是一个跨平台的文件加密工具。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448
推荐度:
导读Express下采用bcryptjs进行密码加密的方法:前几天利用Express开发了个小项目,开发登录注册模块时,采用bcryptjs进行密码加密,总结了一下内容: bcrypt,是一个跨平台的文件加密工具。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448

前几天利用Express开发了个小项目,开发登录注册模块时,采用bcryptjs进行密码加密,总结了一下内容:

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

除了对您的数据进行加密,默认情况下,bcrypt 在删除数据之前将使用随机数据三次覆盖原始输入文件,以阻挠可能会获得您的计算机数据的人恢复数据的尝试。如果您不想使用此功能,可设定禁用此功能。

bcrypt 使用的是布鲁斯·施内尔在1993年发布的 Blowfish 加密算法。具体来说,bcrypt 使用保罗·柯切尔的算法实现。随 bcrypt 一起发布的源代码对原始版本作了略微改动。

Express下bcryptjs的使用步骤:

1.安装bcryptjs模块

npm install bcryptjs --save

2.在需要加密的模块中引入bcryptjs库

var bcrypt = require('bcryptjs');

3.设置加密强度

var salt = bcrypt.genSaltSync(10);

4.注册时生成HASH值,并插入数据库

router.post('/register', function(req, res, next){
 // 从连接池获取连接
 pool.getConnection(function(err, connection) {
 // 获取前台页面传过来的参数
 var param = req.query || req.params;
 /*生成HASH值*/
 var hash = bcrypt.hashSync(param.pwd,salt);
 // 建立连接 新增用户
 connection.query(userSQL.insert, ["",hash,param.phone,"","","",0], function(err, result) {
 res.send(result);
 // 释放连接
 connection.release();
 });
 });
});

5.登录时验证HASH值,并插入数据库

router.post('/login', function(req, res, next){
 // 从连接池获取连接
 pool.getConnection(function(err, connection) {
 // 获取前台页面传过来的参数
 var param = req.query || req.params;
 // 建立连接 根据手机号查找密码
 connection.query(userSQL.getPwdByPhoneNumber, [param.phone], function(err, result) {
 if(bcrypt.compareSync(param.pwd,result[0].password)){
 res.send("1");
 connection.query(userSQL.updateLoginStatusById, [1,result[0].id], function(err, result) {
 });
 }else{
 res.send("0");
 }
 // 释放连接
 connection.release();
 });
 });
});

以上采用的是bcryptjs的同步用法,下面介绍异步用法:

生成hash密码:

bcrypt.genSalt(10, function(err, salt) {
 bcrypt.hash("B4c0/\/", salt, function(err, hash) {
 // Store hash in your password DB.
 });
});

密码验证:

bcrypt.compare("B4c0/\/", hash).then((res) => {
 // res === true
});

下面是使用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);
 }
})

文档

Express下采用bcryptjs进行密码加密的方法

Express下采用bcryptjs进行密码加密的方法:前几天利用Express开发了个小项目,开发登录注册模块时,采用bcryptjs进行密码加密,总结了一下内容: bcrypt,是一个跨平台的文件加密工具。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top