Bcrypt加密详解

Bcrypt介绍

Bcrypt是单向Hash加密算法,类似Pbkdf2算法 不可反向破解生成明文。

在这里插入图片描述
在node中的使用

// npm bcrypt
// 导入bcrypt
const bcrypt = require('bcrypt');


async function run () {
	// 生成随机字符串
	// genSalt方法接收一个数值作为参数
	// 数值越大 生成的随机字符串复杂度越高
	// 数值越小 生成的随机字符串复杂度越低
	// 默认值是 10
	// 返回生成的随机字符串
	const salt = await bcrypt.genSalt(10);
	// 对密码进行加密
	// 1. 要进行加密的明文
	// 2. 随机字符串
	// 返回值是加密后的密码
	const result = await bcrypt.hash('123456', salt);
	console.log(salt);
	console.log(result);
}

run();

//如何进行验证呢?
//第一个参数是原始密码
//第二个参数是bcrypt加密后的密码
//两个参数进行校验 如果一致则放回true 否则返回 false
const pwdMatchFlag =bcrypt.compareSync(password, mypassword);

genSalt: 正数,代表hash杂凑次数,数值越高越安全,默认10次。
salt: 盐,一个128bits随机字符串,22字符
Hash: 经过明文密码password和盐salt进行hash,循环加盐hash10次,得到result结果

经过bcrypt加密的是无法直接解密的,因为bcrypt是单向hash算法,所以即便是黑客拿到bcrypt也很难破解

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bcrypt加密算法是一种慢哈希算法,相同明文通过Bcrypt生成的密文每次都是不一样的,这样就无法通过直接比对密文来反推明文。与MD5相比,Bcrypt加密算法的执行时间较长,约为0.3秒,而MD5加密约为1微秒。这使得暴力破解Bcrypt的时间成本很高。此外,Bcrypt加密长度为60位,而MD5只有32位,这也提高了穷举破解的难度。因此,Bcrypt加密算法相对于MD5具有更高的安全性和抗攻击性。\[1\] 引用\[1\]:相同明文通过Bcrypt生成的密文每次都是不一样的,MD5则相同。这样就无法通过直接比对密文来反推明文。 2、Bcrypt是种慢哈希算法,执行时间较长。有文章指出,针对某一字符串,Bcrypt执行一次加密约0.3秒,MD5加密约1微秒(百万分之一秒)。使得暴力破解Bcrypt的时间成本很高。Bcrypt加密长度60位,MD5是32位,提高穷举难度。\[1\] #### 引用[.reference_title] - *1* *2* [Bcrypt 加密算法研究与对比](https://blog.csdn.net/x2hg123/article/details/107961008)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [spring security (BCryptPasswordEncoder)加密及判断密码是否相同](https://blog.csdn.net/hcrw01/article/details/107745555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值