针对django的check_password()方法用java编写类似的验证

本文介绍了如何在Java中实现与Django的`check_password()`方法类似的功能,主要关注PBKDF2PasswordHasher加密算法的应用,以满足特定业务需求。

业务需要到记录一下,直接上代码


import lombok.extern.slf4j.Slf4j;

import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import java.nio.charset.Charset;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.util.Base64;
import java.util.Random;

/**
 * @author :smallkinghjm
 * @description:因为需要和django的的系统兼容,这里模拟django的check_password()方法实现对用户密码的加密及验证,只保证验证成功的版本
 * jdk:1.8
 * 加密算法:pbkdf2_sha256
 * @date :2022/3/4 13:19
 */
@Slf4j
public class CryptoUtil {
   
   

    private static Integer DEFAULT_ITERATIONS = 20000;//默认迭代次数
    public static String algorithm = "pbkdf2_sha256";

    private static String getEncodedHash(String password, String salt, int iterations) {
   
   

        // 仅返回整个编码密码的最后一部分
        SecretKeyFactory keyFactory = null;
        try {
   
   
            keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
        } catch (NoSuchAlgorithmException e) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值