加密

  1. BCryptPasswordEncoder encode = new BCryptPasswordEncoder();
  2. encode.encode(password);

比较

  1. matches(CharSequence rawPassword, String encodedPassword)

需要通过自带的方法 matches 将未经过加密的密码和已经过加密的密码传进去进行判断,返回布尔值。

举例

  1. public class BCryptPasswordEncoderTest {
  2. public static void main(String[] args) {
  3. String pass = "admin";
  4. BCryptPasswordEncoder bcryptPasswordEncoder = new BCryptPasswordEncoder();
  5. String hashPass = bcryptPasswordEncoder.encode(pass);
  6. System.out.println(hashPass);
  7.  
  8. boolean flag = bcryptPasswordEncoder.matches("admin",hashPass);
  9. System.out.println(flag);
  10. }
    }

可以看到,每次输出的hashPass 都不一样,但是最终的flag都为 true,即匹配成功。

查看代码,可以看到,其实每次的随机盐,都保存在hashPass中。在进行matchs进行比较时,调用BCrypt 的String hashpw(String password, String salt)方法。两个参数即”admin“和 hashPass。

  1. //******BCrypt.java******salt即取出要比较的DB中的密码*******
  2. real_salt = salt.substring(off + 3, off + 25);
  3. try {
  4. // ***************************************************
  5. passwordb = (password + (minor >= 'a' ? "\000" : "")).getBytes("UTF-8");
  6. }
  7. catch (UnsupportedEncodingException uee) {}
  8. saltb = decode_base64(real_salt, BCRYPT_SALT_LEN);
  9. B = new BCrypt();
  10. hashed = B.crypt_raw(passwordb, saltb, rounds);

假定一次hashPass为:$2a$10$AxafsyVqK51p.s9WAEYWYeIY9TKEoG83LTEOSB3KUkoLtGsBKhCwe

随机盐即为 AxafsyVqK51p.s9WAEYWYe(salt = BCrypt.gensalt();中有描述),可见,随机盐(AxafsyVqK51p.s9WAEYWYe),会在比较的时候,重新被取出。

即,加密的hashPass中,前部分已经包含了盐信息。

BCryptPasswordEncoder 判断密码是否相同的更多相关文章

  1. BCryptPasswordEncoder加密及判断密码是否相同

    项目中用到了BCryptPasswordEncoder对密码进行二次加密,需要注意的是,加密后的字符串比较长,数据库的长度至少为60位. 通过BCryptPasswordEncoder的加密的相同字符 ...

  2. 原生JS判断密码强弱

    前些天工作中有这个需求,自己手写了相关的JS代码,第一种方法是通过ASCII 码判断密码类型,完成用户注册时判断用户输入密码的强度,分强.弱.中三等级,它可以根据用户输入的密码显示对应的密码强弱等级, ...

  3. Js判断密码强度并显示提示信息

    用javascipt实现的Ajax判断密码强弱的功能,大多数有用户注册功能的网站,都会有这么一个功能,作为WEB程序员,应该会写这种小模块哦,不懂的就看下这个例子,觉得挺简单,当初帮助了不少人学会了密 ...

  4. 【课上OJ】判断密码强度

    一个判断密码强度问题: 假设允许采用以下四类字符作为密码: (1)大写英文字母,(2)小写英文字母,(3)数字0-9,(4)特殊符号 @ - _ # ~ 对密码强度做以下规定: Best: 长度> ...

  5. js 正则之 判断密码类型

    原文:js 正则之 判断密码类型 今天没啥写的,就分享个思路吧.之前在群里讨论的时候,谢亮兄弟说判断密码是否是纯数字,纯字母之类的.如果用 , 条判断,那就老长一大段了.这个思路是我之前看 jQuer ...

  6. js判断密码强度是否符合

    /** 判断密码强度是否符合 */ function check_passwd_intensity(password) { value = $.trim(password); if( value.le ...

  7. JavaScript判断密码强度

    以下是代码: <html> <head> <title>JS判断密码强度</title> <script language=javascript& ...

  8. 判断密码是否可见/判断登录的状态/判断在form表单中 定义rules规则验证(iview)

    一: 判断密码是否可见判断:type="visiblePassword ? 'text' : 'password'" 是否为false 或者 true 密码为输入框或者文本框点击眼 ...

  9. python 字符串实例:检查并判断密码字符串的安全强度

    检查并判断密码字符串的安全强度 import string def check(pwd): #密码必须至少包含六个字符 if not isinstance(pwd,str) or len(pwd)&l ...

随机推荐

  1. js中this关键字的作用

    this中的几种情况 1.普通函数中的this window 2.构造函数中的this 是当前构造函数创建的对象在new这个构造函数的时候会在内存中创建一个对象,此时会让this指向刚创建好的这个对象 ...

  2. Java 打印HelloKitty

    Java第一课 如何在控制台打印出"Hello Kitty" 如图所示,在IDE中使用 System.out.println(); 语句来实现打印 最后附上AIDE下载链接: Ja ...

  3. python基础-内置装饰器classmethod和staticmethod

    面向对象编程之classmethod和staticmethod classmethod 和 staticmethod都是python内置的装饰器 classmethod 的作用:给在类内部定义的方法装 ...

  4. windows 如何cmd启动redis

    运行cmd 然后到redis路径 运行命令: redis-server redis.windows.conf

  5. 【分布式搜索引擎】Elasticsearch之安装Elasticsearch可视化平台Kibana

    一.Kibana简单介绍 Kibana 是为 Elasticsearch设计的开源分析和可视化平台.你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互.你 ...

  6. c# 第12节 分支语句if、switch、三位运算符

    本节内容: 1:流程控制语句分类 2:分支语句之if的使用 3:分支语句之switch的使用 4:分支语句之三位运算符 5:分支语句比较 1:流程控5:制语句分类 2:分支语句之if 3:分支语句之s ...

  7. Java+Selenium3方法篇21-webdriver处理浏览器多窗口切换

    经过前面两篇文章的铺垫,我们这篇介绍,webdriver如何处理,一个浏览器上多个窗口之间切换的问题.我们先脑补这样一个测试场景,你在页面A点击一个连接,会在新的tab窗口打开页面B,这个时候,你在页 ...

  8. 集合(List、Set、Map)

    一.集合与数组 数组:长度固定,数组元素可以是基本类型,也可以是对象.不适合在对象数量未知的情况下使用. 集合:(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. Java集合类存放 ...

  9. Linux--部署Django项目

    简单部署 1.安装虚拟环境virtualenvwrapper,创建虚拟环境目录,进入虚拟环境,我的虚拟环境目录叫venv2 [root@HH ~]# workon venv2 (venv2) [roo ...

  10. Hello 2019 D 素因子贡献法计算期望 + 概率dp + 滚动数组

    https://codeforces.com/contest/1097/problem/D 题意 给你一个n和k,问n经过k次操作之后留下的n的期望,每次操作n随机变成一个n的因数 题解 概率dp计算 ...