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

  • 相关阅读:
    IIS服务器应用程序不可用的解决办法
    C#几个经常犯错误汇总
    C1flexgrid格式化
    图片自动按比例缩小代码(防止页面被图片撑破)
    VSS2005的使用与配置过程
    ASP.NET通过IHttpModule实现伪静态
    五一游玩收藏
    plants
    几个JS的方法
    英式英语VS美式英语的差异
  • 原文地址:https://www.cnblogs.com/wx1993/p/5250275.html
Copyright © 2020-2023  润新知