PasswordEncoder密码编码器

news/2024/12/2 12:49:18/

Spring Security封装了如PBKDF2 , scrypt, Argon2,bcrypt等主流适应性单向加密方法,支持不同的密码加密方式,而且根据不同的用户可以使用不同的加密方式。

/*** 密码编码器*/@Resourceprivate PasswordEncoder passwordEncoder;

目前PasswordEncoder只提供了三个接口方法,具体用法如下;

    //encode()是对字符串进行加密的方法,一般对密码进行加密时调用;String encode(CharSequence rawPassword);//使用来校验传入的明文密码rawPassword是否和加密密码encodedPassword相匹配的方法,//一般登录认证时调用;boolean matches(CharSequence rawPassword, String encodedPassword);//upgradeEncoding()是重新编码密码;default boolean upgradeEncoding(String encodedPassword) {return false;}

可以看到,下面这个encode()方法中先得到了一个盐值加盐,并且进行hash加密,所以每次得到的密文都不一样,保证了加密后的安全性

public String encode(CharSequence rawPassword) {if (rawPassword == null) {throw new IllegalArgumentException("rawPassword cannot be null");} else {String salt = this.getSalt();return BCrypt.hashpw(rawPassword.toString(), salt);}}

小结

PasswordEncoder使用哈希算法+随机盐来对字符串加密。因为哈希是一种不可逆算法,所以密码认证时需要使用相同的算法+盐值来对待校验的明文进行加密,然后比较这两个密文来进行验证。BCryptPasswordEncoder在加密时通过从传入的salt中获取real_salt用来加密,保证了这一点。
 


http://www.ppmy.cn/news/811699.html

相关文章

自定义输入密码控件

GitHub - awenzeng/gestrue-password: GesturePassword,gestrue-password,gestrue,手势密码,九宫格密码,支付密码 九宫格GitHub - maning0303/MNPasswordEditText: Android验证码和密码输入框,能自定义输入框个数和样式…

图形化WiFi密码的破解

本文仅限学术交流,请勿用他人实践 文章目录 前言 一 准备工作 二 进行渗透 总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一 准备工作 首先我们要购买一款带有监听功能的网卡,我这里购买的是3070L的大概40-50元 我…

密码框password调用数字键盘

<input type"password"> 移动端&#xff0c;input当typepassword时&#xff0c;调用的是字母键盘&#xff0c;有时候密码只有数字时&#xff0c;既想调出数字键盘又想把密码隐藏&#xff1b;可以这样写&#xff1b; <input type"tel" style&qu…

react子组件向父组件传递数据和父组件向子组件传递数据的正确写法和函数互相调用

存在伪代码,自行解决 父组件 App&#xff1a; import React, { useState, useEffect } from react; import { Col, Row, Space, Table, Switch, Tag, Button } from antd; import Qs from qs;const App: React.FC () > {//父组件传数据到子组件函数const [opne, setOpen] …

安卓应用开发 MyWeChat(一)

安卓应用开发 MyWeChat&#xff08;一&#xff09; 项目gitee仓库实现MyWeChat初步静态界面静态界面首部&#xff08;top&#xff09;静态界面底部&#xff08;bottom&#xff09;静态界面中部&#xff08;fragment&#xff09;综合整理静态界面 实现MyWeChat界面初步的显示与跳…

Python函数定义的高级用法

函数定义时的几类常见参数&#xff1a; 1、默认参数 看如下代码 def stu_register(name,age,country,course): print("----注册学⽣生信息------") print("姓名:",name)print("age:",age) print("国籍:",country) print("课程…

weblogic12 最低java,weblogic12c配置

1.1准备工作&#xff1a; 1.1.1检查系统是否安装JDK I.检查命令为&#xff1a; echo $JAVA_HOME 如果返回结果为空&#xff0c;说明没有当前系统没有安装JDK&#xff0c;需要安装JDK&#xff0c;需要下载JDK安装文件 II.下载JDK安装文件&#xff1a; III.安装JDK&#xff1a;…

stm32控制esp8266的实现STA/AP/STa+AP程序

一、引脚定义 ATK-MW8266D模块的各个引脚的详细描述&#xff0c;如下表所示 一、功能说明 ATK-MW8266D模块支持三种工作模式&#xff0c;分别为&#xff1a;STA、AP、STAAP。 STA模式 在此模式下&#xff0c;ATK-MW8266D模块可连接其他设备提供的无线网络&#xff0c;例如通…