package com.zjrs.ggfw.dzsbk.util;

import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import io.micrometer.core.instrument.util.StringUtils;

public class RSAUtils {

    /**
     * 公钥加密
     */
    public static String encrypt(String content, String key) {
        if(StringUtils.isBlank(content)) {
            return "";
        }
        // SecureUtil.rsa(privateKey, publicKey)
        RSA rsa = SecureUtil.rsa(null, key);
        // encryptBase64 会自动处理 Base64 编码，无需手动再调 decode
        return rsa.encryptBase64(URLUtil.encode(content), KeyType.PublicKey);
    }

    /**
     * 私钥解密
     */
    public static String decrypt(String content, String key) {
        if(StringUtils.isBlank(content)) {
            return "";
        }
        // SecureUtil.rsa(privateKey, publicKey)
        RSA rsa = SecureUtil.rsa(key, null);
        byte[] bytes = rsa.decrypt(Base64.decode(content), KeyType.PrivateKey);

        return URLUtil.decode(StrUtil.str(bytes, CharsetUtil.CHARSET_UTF_8));
    }
}