• 35.4 Password Encoding


    spring-security-crypt模块的密码包支持对密码进行编码。PasswordEncoder 是中央服务接口,具有以下签名:

    1 public interface PasswordEncoder {
    2 
    3 String encode(String rawPassword);
    4 
    5 boolean matches(String rawPassword, String encodedPassword);
    6 }

    如果原始密码编码后等于编码密码,则matches方法返回true。该方法旨在支持基于密码的身份验证方案。

    BCryptPasswordEncoder实现使用广泛支持的“bcrypt”算法来散列密码。加密使用一个随机的16字节盐值,是一个故意慢的算法,以阻止密码破解。它所做的工作量可以使用“强度”参数进行调整,该参数取值范围为4到31。该值越高,计算哈希所需做的工作就越多。默认值为10。您可以在部署的系统中更改该值,而不会影响现有密码,因为该值也存储在编码的哈希中。

    1 // Create an encoder with strength 16
    2 BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(16);
    3 String result = encoder.encode("myPassword");
    4 assertTrue(encoder.matches("myPassword", result));

    Pbkdf2PasswordEncoder 实现使用PBKDF 2算法对密码进行哈希处理。为了击败密码破解,PBKDF2是一个故意慢的算法,应该调整到需要大约0.5秒来验证您系统上的密码。

    1 // Create an encoder with all the defaults
    2 Pbkdf2PasswordEncoder encoder = new Pbkdf2PasswordEncoder();
    3 String result = encoder.encode("myPassword");
    4 assertTrue(encoder.matches("myPassword", result));
  • 相关阅读:
    【CodeForces 438D 】The Child and Sequence
    【雅礼集训 2017 Day1】市场
    【POJ2528】Mayor's posters
    【NOIP模拟】图论题Graph
    【BZOJ2654】Tree
    【NOIP模拟】函数
    【NOIP模拟】箱子
    【CQOI2014】数三角形
    【USACO2009Feb】股票市场
    【APIO2009-3】抢掠计划
  • 原文地址:https://www.cnblogs.com/jrkl/p/13508778.html
Copyright © 2020-2023  润新知