springboot 密码加密

这篇具有很好参考价值的文章主要介绍了springboot 密码加密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

密码进行加密存储能够一定程度保护密码泄露,一般能做到一下两点,就能够满足大部分应用的密码保护要求。

  • 对密码进行单向加密,明文加密后不可逆。
  • 使用技术手段实现加密后的密码能够与明文进行比较。

spring-security-crypto模块提供了对密码的加密支持,引入spring-security即可

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

spring-security-crypto提供了以下几个类用于密码加密。

  • BCryptPasswordEncoder
  • Argon2PasswordEncoder
  • Pbkdf2PasswordEncoder
  • SCryptPasswordEncoder

以上类都实现了PasswordEncoder接口,功能大同小异,只是加密算法不一样,选其一即可,代码如下

public interface PasswordEncoder {
    //对明文进行加密
    String encode(CharSequence rawPassword);
    //明文和密文进行匹配
    boolean matches(CharSequence rawPassword, String encodedPassword);
    //判断密文是否为当加密方方式的字符串
    default boolean upgradeEncoding(String encodedPassword) {
        return false;
    }
}

BCryptPasswordEncoder

官方解释:实现使用广泛支持的“bcrypt”算法来散列密码。Bcrypt 使用随机的 16 字节加盐值,并且是一种故意放慢的算法,以阻止密码破解者。可以使用参数调整它所做的工作量strength,该参数的取值范围为 4 到 31。值越高,计算散列所要做的工作就越多。默认值为10。文章来源地址https://www.toymoban.com/news/detail-613332.html


    public static String bCryptEncode(String str){
        if(StringUtils.isBlank(str)){
            return null;
        }
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        String result = encoder.encode(str);
        return result;
    }


    public static boolean bCryptMatch(String str, String bCryptStr){
        if(StringUtils.isBlank(str)){
            return false;
        }
        if(StringUtils.isBlank(bCryptStr)){
            return false;
        }
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        encoder.upgradeEncoding(bCryptStr);
        return encoder.matches(str, bCryptStr);
    }

    public static void main(String[] args) {
        String encodStr = bCryptEncode("sdasd11!!!...");
        System.out.println(encodStr);
        boolean match = bCryptMatch("sdasd11!!!...", encodStr);
        System.out.println(match);
        match = bCryptMatch("123234322", encodStr);
        System.out.println(match);
        //输出
        //$2a$10$FkRM7DFyh/xao/eImTNUgOQMqnGXTq7/mbMfxh4INEzECW8OulZAS
        //true
        //false
    }

到了这里,关于springboot 密码加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包