Java通过BCrypt加密过程详解

本文主要介绍了通过BCrypt对Java的加密过程的详细讲解,并且通过示例代码非常详细,对于大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。

一、概述

在用户模块中,用户密码的保护通常是加密的。我们通常会对密码进行加密,并将其存储在数据库中。当用户登录时,他们对自己的密码进行加密,并与存储在数据库中的密文进行比较,以验证用户的密码是否正确。

目前比较流行的是MD5和BCrypt。相对而言,BCrypt比MD5更安全,但加密速度较慢。

二、使用BCrypt

第一,可以在官网获取源代码。

然后通过Ant编译。然后编译得到jbcrypt.jar.也可以不编译直接使用源代码中的java文件(只有一个文件本身)。

以下是来自官网的演示。

公共类BCryptDemo {

公共静态void main(String[] args) {

//第一次哈希密码

String password=' testpassword

string hashed=bcrypt . hashpw(password,bcrypt . gensalt());

system . out . println(hashed);

//gensalt的log_rounds参数决定复杂度

//工作因子为2**log_rounds,默认值为10

string hashed 2=bcrypt . hashpw(password,bcrypt . gen salt(12));

//检查未加密的密码是否与已加密的密码匹配

//之前已经过哈希处理

string candidate=' test password ';

//String candidate=' wrongtestpassword ';

if (BCrypt.checkpw(候选,哈希))

System.out.println('它匹配');

其他

System.out.println('它不匹配');

}

}

在这个例子中,

BCrypt.hashpw(密码,BCrypt.gensalt())

是核心。通过调用BCrypt类的静态方法hashpw来加密密码。第二个参数就是我们通常所说的加盐。

BCrypt.checkpw(候选,哈希)

方法是比较用户后来输入的密码。如果匹配,则返回true。

三、加盐

如果两个或两个以上的人的密码相同,加密保存会得到相同的结果。可以通过破解来破解的密码。如果名为A的用户可以查看数据库,那么他可以观察到他的密码与其他人的密码相同。然后,别人用和自己一样的密码,让他用别人的身份登录。

其实可以通过一点混淆来防止,用加密术语来说就是“加盐”。具体来说,就是在原始资料(自定义密码)中加入其他成分(一般是用户自己的、不可改变的因素),增加系统的复杂度。当这个盐和用户密码结合在一起,然后对摘要进行处理,就可以得到更隐蔽的摘要值。

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

原文地址:http://www.ccttoo.com/html/1747.html

本文来自网络,不代表菜鸟教程之家立场,转载请注明出处。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值