对用用户密码的保存方式之BCrypt加密方式

在需要用户模块的项目中,对于用户密码的保存,一般不会使用明文保存,这样是不安全的。通常情况下,我们都需要对密码进行不可逆的加密,然后存放在数据库中。然后在用户登录的时候,把其输入的密码进行加密与数据库中存放的密文对比来判断密码是否正确。
目前所使用比较多的是MD5,但是BCrypt也使用的比较多,相对来说BCrypt比MD5要安全一些,他的加密更慢。而且一般我们再对密码进行密文加密后,如果有人从数据库中拿到密码通过比对也容易找出对应的用户。因此我们在对密码机密时首先通过对密码的加密,然后在生成一个随机的salt,合并到一起存入数据库。对与使用BCrypt加密,首先下载BCypt的库,其实也就一个.java文件,把他放到项目中,在用户注册是对其提交过来的秘密加密,代码是:
Java代码 复制代码 收藏代码
  1. String hash = BCrypt.hashpw(passwd, BCrypt.gensalt()); 
String hash = BCrypt.hashpw(passwd, BCrypt.gensalt());

其中hash就是加密后的密码,passwd是提交过来的明文密码,把它存入数据库即可。
用户登录时,把用户提交过来的密码和数据库中对应用户的密文密码同时传到BCrypt的方法checkpw中,方法返指是比较结果;

Java代码 复制代码 收藏代码
  1. BCrypt.checkpw(passwd, hash); 
BCrypt.checkpw(passwd, hash);


这里第一个参数就是用户登录时输入的密码,hash就是经过加密存在数据库中的密文密码,方法结果是比较的结果,布尔型。对于对密码机密是,其中BCrypt.gensalt()其实就是得到一个随机的字符串,然后再和加密的密文合并在一起。
我们也可以自己来实现加密的方式,但是要记住在加密时最好分为两部分,第一就是对密码通过实现的加密方式加密,第二部分分为是在得到一个随机的字符串,也叫salt,俗称“佐料”。然后合并在一起,这样更加安全。

 

 

BCrypt下载:http://www.mindrot.org/projects/jBCrypt/

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值