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的破解成本更高。

相关文章
|
存储 安全 算法
用 MD5 加密 WordPress 验证码的完整教程
本文详细介绍了如何使用MD5加密技术增强WordPress验证码的安全性。通过将验证码答案以MD5形式加密并存储在Session中,避免了明文传输可能带来的安全风险。文章从形势分析、MD5算法介绍到实战操作步骤,逐步引导读者实现加密验证流程。同时提供了调试方法,确保修改生效。此教程旨在为网站添加一层安全保障,提升对抗网络攻击的能力。
665 1
|
存储 算法 安全
MD5加密
MD5(Message-Digest Algorithm 5)是一种单向加密算法,将任意长度的数据转换为128位固定长度的散列值,主要用于数据完整性校验和密码存储。其特点包括不可逆运算、高度离散性和相同输入生成一致结果。然而,MD5存在碰撞风险,直接加密密码不安全,需配合“加盐”处理增强安全性。文中提供了未加盐的MD5工具类`MD5Utils`,核心方法`msgToMD5`实现基本加密功能。尽管MD5理论上不可逆,但通过彩虹表等手段可能存在伪破解风险,建议结合多种加密算法提升安全性。
1067 2
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
598 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
623 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
数据安全/隐私保护 Python
Python中的MD5加密“解密”
Python中的MD5加密“解密”
772 0
|
IDE 开发工具 数据安全/隐私保护
Python编程实现批量md5加密pdf文件
Python编程实现批量md5加密pdf文件
341 0
|
数据安全/隐私保护 Python
Python中的MD5加密“解密”
Python中的MD5加密“解密”
680 0
|
存储 NoSQL Java
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
存储 算法 Java
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。
这篇文章详细介绍了在Java项目中如何使用MD5算法对用户密码进行加密存储和登录验证,包括加入依赖、编写MD5工具类、注册时的密码加密和登录时的密码验证等步骤,并通过示例代码和数据库存储信息展示了测试效果。
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。