开发工具与关键技术:IntelliJ IDEA java
作者:木林森
撰写时间:2021年4月27日
在用户模块,对于用户密码的保护,通常都会进行加密然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否正确。目前,MD5和BCrypt比较流行。
BCrypt是单向Hash加密算法,一般用于密码加密,相对来说,BCrypt比MD5更安全 ,但是MD5加密会更快速。 MD5是一种可反向破解的密码加密,如果你的密文被截获它就可以在MD5在线解密破解得到密码,然后就可以根据你的账号密码登录账号。而Bcrypt类似Pbkdf2算法不可反向破解生成明文(不可逆加密),所以即使黑客截获到密文也无法转换成明文(BCrypt不支持反运算, 只支持密码校验)。虽然不能转换成明文密码,但是它还是会被彩虹破解,只是相对于破解时间来说两者差别巨大,如果非要举例说明一下,用彩虹破解MD5可能需要3分钟左右,而BCrypt就需要14年之久。所以一般都推荐使用bcrypt。
BCrypt加密原理:输入的明文密码通过10次循环加盐后得到myHash(版本+salt),然后存入数据库。系统在验证用户的口令时,需要从myHash中取出salt跟password进行hash;得到的结果保存在DB中的hash进行比对,如果一致才算验证通过。
bcrypt密码图解: 图片来源于网上
BCrypt入门
最新推荐文章于 2025-03-08 19:00:25 发布