zoukankan      html  css  js  c++  java
  • 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));
  • 相关阅读:
    UOJ 【UR #5】怎样跑得更快
    【TJOJIHEOI2016】求和
    CF 932E Team Work
    【BZOJ2159】Crash的文明世界
    Luogu P4707 重返现世
    Luogu P3175 [HAOI2015]按位或
    【BZOJ3930】选数
    nginx 学习
    如何解决 react-create-app 里面的 no-unused-vars ?
    随时更新web html 项目页面,查看手机等其他移动设备的几种方法?
  • 原文地址:https://www.cnblogs.com/jrkl/p/13508778.html
Copyright © 2011-2022 走看看