一、概述

在用户模块,对于用户密码的保护,通常都会进行加密。我们通常对密码进行加密,然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否正确。

目前,MD5和BCrypt比较流行。相对来说,BCrypt比MD5更安全,但加密更慢。
二、使用BCrypt
首先,可以在官网中取得源代码http://www.mindrot.org/projects/jBCrypt/
然后通过Ant进行编译。编译之后得到jbcrypt.jar。也可以不需要进行编译,而直接使用源码中的java文件(本身仅一个文件)。
下面是官网的一个Demo。
public class BCryptDemo {
  public static void main(String[] args) {
   // Hash a password for the first timeString password = "testpassword";String hashed = BCrypt.hashpw(password, BCrypt.gensalt());System.out.println(hashed);// gensalt's log_rounds parameter determines the complexity// the work factor is 2**log_rounds, and the default is 10String hashed2 = BCrypt.hashpw(password, BCrypt.gensalt(12));// Check that an unencrypted password matches one that has// previously been hashedString candidate = "testpassword";//String candidate = "wrongtestpassword";if (BCrypt.checkpw(candidate, hashed))System.out.println("It matches");elseSystem.out.println("It does not match");}
}

在这个例子中,

BCrypt.hashpw(password, BCrypt.gensalt())
是核心。通过调用BCrypt类的静态方法hashpw对password进行加密。第二个参数就是我们平时所说的加盐。

BCrypt.checkpw(candidate, hashed)
该方法就是对用户后来输入的密码进行比较。如果能够匹配,返回true。

三、加盐
如果两个人或多个人的密码相同,加密后保存会得到相同的结果。破一个就可以破一片的密码。如果名为A的用户可以查看数据库,那么他可以观察到自己的密码和别人的密码加密后的结果都是一样,那么,别人用的和自己就是同一个密码,这样,就可以利用别人的身份登录了。
其实只要稍微混淆一下就能防范住了,这在加密术语中称为“加盐”。具体来说就是在原有材料(用户自定义密码)中加入其它成分(一般是用户自有且不变的因素),以此来增加系统复杂度。当这种盐和用户密码相结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值。

转载于:https://www.cnblogs.com/xingzc/p/8624007.html

Java通过BCrypt加密相关推荐

  1. Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试

    一.工具类 1, md5加密工具类 2, base64加密工具类 3, Bcrypt工具类 二.加密测试 MD5加密测试 base64加密测试 SHA加密测试 BCrypt加密测试 一.工具类 1, ...

  2. BCrypt加密方式

    目前所使用比较多的是MD5,但是BCrypt也使用的比较多,相对来说BCrypt比MD5要安全一些,他的加密更慢.而且一般我们再对密码进行密文加密后,如果有人从数据库中拿到密码通过比对也容易找出对应的 ...

  3. java提供密码加密的实现

    Md5加密 /*** 提供密码加密的类*/ public class Md5Util {public static String encode(String msg){try {MessageDige ...

  4. javascript rsa java,用javascript与java执行 RSA加密与解密

    用javascript与java执行 RSA加密与解密 2009-12-12 14:58:30   出处:https://www.yqdown.com 这几天一直做安全登录,网上查了好多资料,不尽如意 ...

  5. java python rsa加密_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  6. java 接口 安全加密_Java中的安全加密

    java 接口 安全加密 上一次我写关于密码学的文章时 ,我概述了Apache Shiro加密API,并展示了如何使用其两个对称密码. 我还写道:"您不需要在应用程序中加密和解密敏感数据的更 ...

  7. laravel5的Bcrypt加密方式对系统保存密码的小结

    laravel5文档介绍 1 //对 A 密码使用Bcrypt 加密 2 $password = Hash::make('secret'); 3 4 //你也可直接使用 bcrypt 的 functi ...

  8. php 3des 兼容java,java版3des加密程序,可与php兼容

    java版3des加密程序,可与php兼容 时间:2009-03-29 22:35来源:未知 作者:admin 点击:次 代码: import java.io.UnsupportedEncodingE ...

  9. java使用RSA加密方式,实现数字签名

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用RSA加密方式,实现数字签名.数字签名,使用私钥获取签名,使用公钥校验签名 测试代码 public static void main( ...

  10. java使用DES加密方式,实现对数据的加密解密

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用DES加密方式,实现对数据的加密解密.加密和解密中需要使用同一个秘钥 第一种方式,使用类型Key作为加密解密的共同秘钥. 测试代码 p ...

最新文章

  1. iOS将产品进行多语言发布,开发
  2. 用友U8配置动态密码认证
  3. 收银机多少钱一台推荐科脉系统_防火门监控系统安装预算多少钱?防火门监控系统安装预算表[今日推荐]...
  4. maven 主pom 配置不同环境指定不同配置文件以及打包参数
  5. SAP Customer Experience Extensibility gold rule
  6. 我从大厂面试中学到的关于 C# 的知识
  7. 显示计算机硬盘驱动器更改,计算机更换硬盘驱动器后蓝屏发生了什么
  8. Python自动化运维之高级函数
  9. DM框架中CString/CStringW 转 double (c++通用)
  10. Windows服务器nginx多个二级域名配置多端口无效问题的解决方案
  11. 凸优化第五章对偶 5.7例子
  12. 加固机箱设计资料第289篇:基于3U VPX的 5槽加固机箱
  13. FFMPEG安装与视频格式flv转换mp4
  14. 电脑浏览器主页面被恶意劫持无法修改的解决方法
  15. 分布式系统生成唯一主键
  16. pandas数据透视表
  17. Linux随笔16-主从DNS服务搭建以及智能DNS服务搭建、基于CentOS7.6编译安装MySQL-5.7.32
  18. QQ能上网,浏览器打不开网页,怎么办?
  19. 北京世纪安图在汉参加地理国情监测技术与应用研讨会
  20. 解决docker报错:listing workers for Build: failed to list workers: Unavailable: connection error: desc =

热门文章

  1. 计算机秘密程序 听课反思,《编制计算机程序解决问题》的教学反思
  2. python web异步_如何使用python中的理解来批处理异步web请求?
  3. Springboot thymeleaf i18n国际化多语言选择-2.业务流程内部返回 对应的语言
  4. 分表用到的一些函数/php mysql 前面补0
  5. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_19-页面查询服务端开发-创建CMS服务工程-CMS工程结构...
  6. 阶段3 3.SpringMVC·_05.文件上传_4 文件上传之Springmvc方式上传代码
  7. 阶段3 2.Spring_08.面向切面编程 AOP_6 四种常用通知类型
  8. Zabbix proxy配置
  9. django之视图view小知识
  10. 《机器学习实战》学习笔记第二章 —— K-近邻算法