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

使用bcrypt进行用户密码加密的简单实现的更多相关文章

  1. 使用mongoose和bcrypt实现用户密码加密

    前面的话 最近在做的个人项目中,需要对密码进行加密保存,对该操作的详细步骤记录如下 介绍 关于mongoose已经写过博客就不再赘述,下面主要介绍bcrypt bcrypt是一个由两个外国人根据Blo ...

  2. Maven-009-Nexus 用户密码加密(安全必须)

    信息数据大爆发的时代,我们关心什么?没错,数据安全!数据安全!数据安全!(重要事情说三遍,哈哈哈...) 之前我们存放在 maven settings.xml 文件中的 Nexus 私服用户密码都是明 ...

  3. Cognos权限认证CJP方式之用户密码加密

    在项目开发过程中,用户往往对系统的安全都有明确的要求,下面针对cognos门户认证用户密码如何加密来提供一个简单的wf 1Cognos权限认证方式:CJP 2Cognos用户数据库类型:Oracle ...

  4. C#:使用MD5对用户密码加密与解密

    C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1 ...

  5. c# 对用户密码加密解密

    一.使用16位.32位.64位MD5方法对用户名加密 1)16位的MD5加密 ? 1 2 3 4 5 6 7 8 9 10 11 12 /// <summary> /// 16位MD5加密 ...

  6. 转 C#:使用MD5对用户密码加密与解密

    C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1 ...

  7. php提供的用户密码加密函数

    在实际项目中,对用户的密码加密基本上采用的  md5加盐的方式, php5.5后提供了一个加密函数,不需要手动加盐,不需要去维护盐值, $str = "123456"; $pwd ...

  8. java工具类学习,系统中用户密码加密总结

    现在项目,用户注册登录部分很少有涉及到了,原因:现在热门开发框架都已经在底层帮我们做了一套用户注册,密码加密,登录认证,权限控制,缓存数据等基本功能. 这有利于项目的快速完成,只需要搬砖码畜们专注于业 ...

  9. Openfire用户密码加密解密

    需求要求审核过程中都用匿名进行用户注册登录,注册用户审核通过后才使用openfire内置表 如何做到用户密码统一 Openfire是通过org.jivesoftware.util.Blowfish.j ...

随机推荐

  1. html5 header和group

    <html> <head> <meta charset="UTF-8" /> <meta name="generator&quo ...

  2. [Algorithms(Princeton)] Week1 - PercolationStats

    public class PercolationStats { private int N; private int T; private double[] results; public Perco ...

  3. 解决 PermGen space Tomcat内存设置

    转自:http://qwzhl100.blog.163.com/blog/static/2133124200932813148637/ 在 使用Java程序从数据库中查询大量的数据或是应用服务器(如t ...

  4. VSS错误自动修复

    公司项目开发源代码管理一直用vss,从vss6.0用到vss8.0(vss2005),在近两年的试用中碰到一些大大小小的问题:1:vss服务迁移,这个比较好办,直接将整个vss目录拷贝过去,加上相应的 ...

  5. /etc/named/named.conf.options中的Options参数

    listen-on port 53 { any; }; 监听在这部主机系统上面的哪个网路介面.预设是监听在localhost,亦即只有本机可以对DNS 服务进行查询,那当然是很不合理啊!所以这里要将大 ...

  6. [ZZ] The Naked Truth About Anisotropic Filtering

    http://www.extremetech.com/computing/51994-the-naked-truth-about-anisotropic-filtering In the seemin ...

  7. Javascript 笔记与总结(1-1)作用域

    以语言的角度学习 Js 的底层原理(与 DOM 无关):① 作用域链 ② 词法分析 ③ 闭包 ④ 面向对象(原型链) ① 作用域链 例1 <script> var c = 5; funct ...

  8. WEB系统开发

    最近根据项目组需求做了web工作流程系统,就是一个简单的web管理系统,取代原先使用的excel表格,在VS2008下面开发,数据库使用Mysql,使用Mysql-connecte 5.0与数据库连接 ...

  9. 《Java程序设计》第2周学习总结

    20145317彭垚<Java程序设计>第2周学习总结 教材学习内容总结 类型 基本类型 整数(short.int.long) 字节(byte) 浮点数(float/double) 字符( ...

  10. [转]硬盘分区表知识——详解硬盘MBR

    http://www.blogjava.net/galaxyp/archive/2010/04/25/319344.html 硬盘是现在计算机上最常用的存储器之一.我们都知道,计算机之所以神奇,是因为 ...