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));
  • 相关阅读:
    安卓日志输出-logger
    RecyclerView的使用(3)之加入Header和Footer
    这些年我踩过的坑——Android
    精简点名IAP错误
    Android中BitmapFactory.Options详解
    在Android下通过ExifInterface类操作图片的Exif信息
    android 生成随机数
    JSON入门之二:org.json的基本使用方法
    Android中的各种访问权限Permission含义
    jar命令的用法详解
  • 原文地址:https://www.cnblogs.com/jrkl/p/13508778.html
Copyright © 2011-2022 走看看