JavaScript加密-MD5与Bcrypt

简介: JavaScript加密-MD5与Bcrypt

image.png

MD5

// npm install js-md5
const md5 = require('js-md5');
console.log(md5("123456"));
// e10adc3949ba59abbe56e057f20f883e

Bcrypt

对同一个密码,每次生成的hash不一样,但是hash中包含了salt

在下次校验时,从hash中取出salt,salt跟password进行hash

得到的结果跟保存在DB中的hash进行比对。


// npm install bcrypt
const bcrypt = require('bcrypt');
const saltRounds = 10;
const password = '123456';
// 生成salt
const salt = bcrypt.genSaltSync(saltRounds);
console.log(salt);
// $2b$10$qxOMtiYuTR.sKUOpGIU9Eu
// 加密
const hash = bcrypt.hashSync(password, salt);
console.log(hash);
// $2b$10$qxOMtiYuTR.sKUOpGIU9EugT6MjkNnrmYyjEYDD9ahIWad2esdPya
// 校验
console.log(bcrypt.compareSync(password, hash)); // true);
// true

加密后的格式一般为:

image.png


$2a$10$/bTVvqqlH9UiE0ZJZ7N2Me3RIgUCdgMheyTgV0B4cMCSokPa.6oCa

其中:


$是分割符,无意义;

2a是bcrypt加密版本号;

10是cost的值;

而后的前22位是salt值;

再然后的字符串就是密码的密文了。

总结

Bcrypt生成的密文是60位的。而MD5的是32位的。

Bcrypt的破解成本更高。

相关文章
|
2月前
|
算法 Java 数据安全/隐私保护
java MD5 32位加密
java MD5 32位加密
18 0
|
4月前
|
移动开发 JavaScript 安全
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
115 0
|
1月前
|
JavaScript 前端开发 数据安全/隐私保护
JavaScript实现MD5 加密的6中方式
JavaScript实现MD5 加密的6中方式
14 0
|
2月前
|
编解码 测试技术 数据安全/隐私保护
小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密
小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密
43 2
|
2月前
|
算法 前端开发 JavaScript
SpringBoot+随机盐值+双重MD5实现加密登录
SpringBoot+随机盐值+双重MD5实现加密登录
212 1
|
4月前
|
PHP 数据安全/隐私保护
|
4月前
|
存储 前端开发 JavaScript
JavaScript学习 -- AES加密算法
JavaScript学习 -- AES加密算法
56 0
|
4月前
|
JavaScript 前端开发 算法
JavaScript学习 -- 对称加密算法3DES
JavaScript学习 -- 对称加密算法3DES
22 0
|
Java 数据安全/隐私保护
Java实现最电话号码的简单加密源码
Java实现最电话号码的简单加密源码
18 0
|
3月前
|
存储 安全 算法
【接口加密】Java中的接口加密实践
【接口加密】Java中的接口加密实践