package org.example.Auth.utils;

import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.springframework.stereotype.Component;

@Component
public class SafetyUtil {

    // 加密密码

    /**
     * 密码加密加密（对应C#的SHA1加密实现）
     *
     * @param strPassword 原始密码
     * @return 加密后的密码字符串
     */
    public static String encryptPassword(String strPassword) {
        // 拼接C#中的String.Format("2006{0}New System", strPassword)
        String formattedPassword = String.format("2006%sNew System", strPassword);

        try {
            // 获取SHA1加密实例（对应C#的SHA1CryptoServiceProvider）
            MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
            // 转换为ASCII字节数组（与C# Encoding.ASCII.GetBytes保持一致）
            byte[] bytes = formattedPassword.getBytes(StandardCharsets.US_ASCII);
            // 计算哈希值
            byte[] hashBytes = sha1.digest(bytes);

            // 转换为十六进制字符串（对应C# BitConverterBitConverter.ToString并去除横杠）
            StringBuilder hexString = new StringBuilder();
            for (byte b : hashBytes) {
                // 格式C#格式保持一致，不足两位两位则补0
                hexString.append(String.format("%02X", b));
            }
            return hexString.toString();

        } catch (NoSuchAlgorithmException e) {
            // 保持与C#一致的异常处理风格
            throw new RuntimeException("SHA-1算法算法不支持", e);
        }
    }

    // 验证密码
    public boolean verifyPassword(String rawPassword, String encodedPassword) {
        String encryptedRawPassword = encryptPassword(rawPassword);
        return encryptedRawPassword.equals(encodedPassword);
    }
}