当前位置:   article > 正文

使用BCrypt加密,让你更安全的储存密码_bcrypt帮助

bcrypt帮助

简介

bcrypt是一个跨平台的文件加密工具,使用的是布鲁斯·施内尔在1993年发布的 Blowfish 加密算法。
Bcrypt生成的密文是60位的,并且不会想MD5那样重复

为什么不推荐使用MD5, SHA1, SHA2, SHA3等?

这些都是通用的hash,旨在用尽可能短的时间计算大量数据的摘要。这意味着它们可以用来很好的确保数据的完整性。

而当今服务器能够计算大约每秒330MB的MD5hash,如果你的用户使用6位的小写字母和数字做为密码,则你可以在40秒内测试该条件的每一种可能!而且相当于没有任何花费!!如果你花2000美刀和一周时间搭建一个小型超级计算机集群,这将让你尝试大约每秒700,000,000个密码,而且速度还会每秒向上增加!!!

盐没有多大帮助

盐对于防范字典攻击或蛮力攻击是无效的,你可以使用巨大的盐和很多穿插的盐,但它不会影响攻击者的破解速度,因为你的数据库中有hash和盐。
是否使用盐,只要使用的是专为速度而生的通用hash,那么上面的破解就会有效

用BCrypt解决这些问题

它太慢了!使用一种变体的Blowfish加密算法的密钥时间表并引入work factor,允许设定hash的复杂程度,让BCrypt可以跟上摩尔定律。还可以增加work factor,将hash变慢。
所以,这不是每40秒破解一次的密码,而是大约12年一次!你的密码可能不需要这种安全性,但是bcrypt允许您选择速度和安全性的平衡点。use it.

BCrypt是后端加密存储的解决方案,流程是:

请求传入后端
得到明文密码
使用BCrypt加密得到hash
存入数据库
返回结果

验密流程:

请求传入后端
得到明文密码
数据库取出对应hash
使用BCrypt验证
返回结果

node中的使用方法

  1. 安装
npm install bcrypt
  • 1
  1. 使用
// 引入BCrypt模块
const bcrypt = require('bcrypt');
// 定义加密密码计算强度
const saltRounds = 10;
// 明文密码
const myPlaintextPassword = 'abc123456';
const someOtherPlaintextPassword = 'not_bacon';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

下面两种方法是一样的加密效果

// 加密方法1(调用单独的函数生成盐和hash)
bcrypt.genSalt(saltRounds, function(err, salt) {
    bcrypt.hash(myPlaintextPassword, salt, function(err, hash) {
        // 数据库存入hash
    });
});

// 加密方法2(自动生成盐和hash)
bcrypt.hash(myPlaintextPassword, saltRounds, function(err, hash) {
    // 数据库存入hash
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

验密

// 从数据库得到hash
bcrypt.compare(myPlaintextPassword, hash, function(err, result) {
    // result == true
});
bcrypt.compare(someOtherPlaintextPassword, hash, function(err, result) {
    // result == false
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

更多方法可以参考官方文档

注意

  • saltRounds 表示密码加密的计算强度,从1级到10级,强度越高,密码越复杂,计算时间也越长。 值得注意的是,强度为1-3时强度太低,系统会默认使用强度为10的计算方式进行加密!
  • 每个bcrypt的执行,只使用字符串的前72个字节。匹配密码时忽略任何额外的字节。请注意,这不是前72个字符。字符串可以包含少于72个字符,同时占用超过72个字节(例如,包含Emojis的UTF-8编码的字符串)。

参考文章:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/815653
推荐阅读
相关标签
  

闽ICP备14008679号