package com.example.system.utils;

import lombok.extern.slf4j.Slf4j;
import org.springframework.util.DigestUtils;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

@Slf4j
public class MD5Util {
    /**
     * 对密码使用MD5进行加密
     * @param password
     * @return
     */
    public static String puzzle(String password) {
        String uuid = UUID.randomUUID().toString().replace("-", "");
        String md5 = DigestUtils.md5DigestAsHex((password+uuid).getBytes(StandardCharsets.UTF_8));
        return (md5 + uuid);
    }

    /**
     * 使用MD5校验密码和密文是否相同
     * @param password
     * @param puzzleMd5
     * @return
     */
    public static boolean verify(String password, String puzzleMd5) {
        if (puzzleMd5.length() != 64) {
            log.error("数据库密文存储有误：{}", puzzleMd5);
            return false;
        }
        String uuid = puzzleMd5.substring(32, 64);
        String md5 = puzzleMd5.substring(0, 32);
        String tmp = DigestUtils.md5DigestAsHex((password+uuid).getBytes(StandardCharsets.UTF_8));
        if (md5.equals(tmp)) {
            log.info("密码正确");
            return true;
        }
        else {
            log.info("密码错误");
            return false;
        }
    }
}
