JavaScript加密-MD5与Bcrypt

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: JavaScript加密-MD5与Bcrypt

哈希(Hash, 消息摘要)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串

加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文

14.2.png

图片来源:https://www.cnblogs.com/leoo2sk/archive/2010/10/01/hash-and-encrypt.html

MD5

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

Bcrypt

  1. 对同一个密码,每次生成的hash不一样,但是hash中包含了salt
  2. 在下次校验时,从hash中取出salt,salt跟password进行hash
  3. 得到的结果跟保存在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

加密后的格式一般为:

14.3.png


$2a$10$/bTVvqqlH9UiE0ZJZ7N2Me3RIgUCdgMheyTgV0B4cMCSokPa.6oCa

其中:

  1. $是分割符,无意义;
  2. 2a是bcrypt加密版本号;
  3. 10是cost的值;
  4. 而后的前22位是salt值;
  5. 再然后的字符串就是密码的密文了。

总结

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

Bcrypt的破解成本更高。

参考

算法高级(22)-BCrypt加密算法,号称目前最安全的算法之一

相关文章
|
5月前
|
数据安全/隐私保护 Python
Python中的MD5加密“解密”
Python中的MD5加密“解密”
120 0
|
4月前
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
129 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
3月前
|
资源调度 前端开发 JavaScript
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第10天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤,包括安装依赖、创建混淆脚本、修改 `package.json` 脚本命令、构建项目并执行混淆,以及在 HTML 文件中引用混淆后的文件。通过这些步骤,可以有效提高代码的安全性。
251 2
|
3月前
|
前端开发 JavaScript 安全
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第7天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤。包括项目准备、安装 `javascript-obfuscator`、配置 Vite 构建以应用混淆,以及最终构建项目进行混淆。通过这些步骤,可以有效提升前端代码的安全性,防止被他人轻易分析和盗用。
628 0
|
4月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
71 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
5月前
|
JavaScript 前端开发 安全
js逆向实战之烯牛数据请求参数加密和返回数据解密
【9月更文挑战第20天】在JavaScript逆向工程中,处理烯牛数据的请求参数加密和返回数据解密颇具挑战。本文详细分析了这一过程,包括网络请求监测、代码分析、加密算法推测及解密逻辑研究,并提供了实战步骤,如确定加密入口点、逆向分析算法及模拟加密解密过程。此外,还强调了法律合规性和安全性的重要性,帮助读者合法且安全地进行逆向工程。
132 11
|
4月前
|
数据安全/隐私保护 Python
Python中的MD5加密“解密”
Python中的MD5加密“解密”
140 0
|
4月前
|
IDE 开发工具 数据安全/隐私保护
Python编程实现批量md5加密pdf文件
Python编程实现批量md5加密pdf文件
55 0
|
3月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
47 1
JavaScript中的原型 保姆级文章一文搞懂

热门文章

最新文章