使用SpringBoot重构Django博客(二)基于JWT的用户认证api

本文介绍了一种使用Java重写Django的用户密码验证流程的方法,包括pbkdf2_sha256加密算法的实现及如何在Django应用中查询用户密码并验证。此外,还介绍了如何利用自定义控制器实现登录认证。

JWT暂且不表,主要讲讲如何获取Django的用户表和验证密码,由于Django的用户密码都是通过pbkdf2_sha256加密后存入数据库的,那么需要用java重写这加密过程然后进行比对。

Pbkdf2Sha256.java

package com.arithmeticjia.zuul.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import java.math.BigInteger;
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 ArithmeticJia
 * @version 1.0
 * @date 2021/3/14 1:49 下午
 */
public class Pbkdf2Sha256 {
   
   

    public static final Integer DEFAULT_ITERATIONS = 20000;
    public static final String algorithm = "pbkdf2_sha256";
    public Pbkdf2Sha256() {
   
   }

    public static String getEncodedHash(String password, String salt, int iterations) {
   
   
        // Returns only the last part of whole encoded password
        SecretKeyFactory keyFactory = null;
        try {
   
   
            keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
        } catch (NoSuchAlgorithmException e) {
   
   
            System.err.println("Could NOT retrieve PBKDF2WithHmacSHA256 algorithm");
            System.exit(1);
        }
        KeySpec keySpec = new PBEKeySpec(password.toCharArray(), salt.getBytes(Charset.forName("UTF-8")), iterations, 256);
        SecretKey secret = null;
        try {
   
   
            secret = keyFactory.generateSecret(keySpec);
        } catch (InvalidKeySpecException e) {
   
   
            System.out.println("Could NOT generate secret key");
            e.printStackTrace();
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值