package com.ytpm.hydtw.utils

import android.util.Base64
import java.nio.charset.StandardCharsets

/**
 * Base64 解密工具类
 */
object Base64Decoder {
    /**
     * 简单 Base64 解密（适用于文本数据）
     * @param base64String Base64 编码的字符串
     * @return 解密后的字符串，失败返回空字符串
     */
    fun decodeToString(base64String: String): String {
        return try {
            // 使用 DEFAULT 模式，支持标准 Base64 字符集和填充符
            val decodedBytes = Base64.decode(base64String, Base64.DEFAULT)
            String(decodedBytes, StandardCharsets.UTF_8)
        } catch (e: Exception) {
            e.printStackTrace()
            ""
        }
    }

    /**
     * 解密为字节数组（适用于二进制数据）
     * @param base64String Base64 编码的字符串
     * @return 解密后的字节数组，失败返回空数组
     */
    fun decodeToBytes(base64String: String): ByteArray {
        return try {
            Base64.decode(base64String, Base64.DEFAULT)
        } catch (e: Exception) {
            e.printStackTrace()
            byteArrayOf()
        }
    }

    /**
     * 带填充符的 Base64 解密（某些服务端可能省略填充符）
     */
    fun decodeWithPadding(base64String: String): String {
        // 补全填充符（=）
        val paddedString = padBase64(base64String)
        return decodeToString(paddedString)
    }

    /**
     * 补全 Base64 填充符
     */
    private fun padBase64(base64String: String): String {
        var result = base64String
        val missingPadding = 4 - (result.length % 4)
        if (missingPadding != 4 && missingPadding != 0) {
            result += "=".repeat(missingPadding)
        }
        return result
    }
}