其他分享
首页 > 其他分享> > 【SpringSecurity-02】PasswordEncoding

【SpringSecurity-02】PasswordEncoding

作者:互联网

PasswordEncoding的加密算法

Hash算法

下面是PasswordEncoding接口的源码

package org.springframework.security.crypto.password;

public interface PasswordEncoder {
    String encode(CharSequence var1);	//用于给密码加密

    boolean matches(CharSequence var1, String var2);	//用于校验密码

	//判断加密之后的密码是否需要重新加密,需要返回true,不需要返回false
    default boolean upgradeEncoding(String encodedPassword) {
        return false;
    }
}

BCryptPasswordEncoder测试

	@Test
	void bCryptPasswordTest(){
		BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
		String rawPassword = "123456";
		String encodePassword = passwordEncoder.encode(rawPassword);

		System.out.println("原始密码" + rawPassword);
		System.out.println("加密之后的hash密码:" + encodePassword);

		System.out.println(rawPassword + "是否匹配" + encodePassword + ":"
				+ passwordEncoder.matches(rawPassword, encodePassword));
		System.out.println("654321是否匹配" + encodePassword + ":"
				+ passwordEncoder.matches("654321", encodePassword));
	}

结果如下:
在这里插入图片描述
在这里插入图片描述
发现对于同一个密码,两次加密后的结果都不一样。防止黑客利用常用密码表对秘密进行破解!

对加密后的密码进行分析

分为如下四个部分
$2a		//表示BCrypt算法的版本
$10		//表示算法的强度
$iT3kmqT9Ob2TxVvQgN/N3O		//随机盐
tJJ4GlePNoIgOjGpc6tR/KY/GuFfQq.		//hash值

标签:02,rawPassword,encodePassword,加密,String,passwordEncoder,SpringSecurity,密码,Passwo
来源: https://blog.csdn.net/weixin_45717355/article/details/110132672