fuint-framework/fuint-util/src/main/java/com/fuint/util/RSAUtil.java

(开头部分) 12KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

package com.fuint.util;

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

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.security.*;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;

//import org.apache.commons.io.FileUtils;

/**
 * 数字签名工具类
 * 非对称加/解密(支持大数据)
 *
 * @author fsq
 */
public class RSAUtil {
    private static final Logger logger = LoggerFactory.getLogger(RSAUtil.class);
    //默认字符集
    private static final String CHARSET = "UTF-8";
    //RSA密钥长度
    private static final int KEY_LENGTH = 1024;
    //RSA最大加密明文大小
    private static final int MAX_ENCRYPT_BLOCK = 117;
    // RSA最大解密密文大小
    private static final int MAX_DECRYPT_BLOCK = 128;
    //密钥生成算法
    private static String KEY_RSA = "RSA";
    //签名/验签算法
    private static String KEY_MD5WITHRSA = "MD5withRSA";

    /**
     * 签名方法
     *
     * @param data       待签名数据
     * @param privateKey 私钥串
     * @return String 签名后数据
     */
    public static String signData(String data, String privateKey) {
        try {
//            byte[] signByte = signData(data.getBytes(CHARSET), privateKey);
//            return new String(signByte, CHARSET);
            PrivateKey prikey = getPrivateKey(privateKey);
            Signature signet = Signature.getInstance("SHA1withRSA");
            signet.initSign(prikey);
            signet.update(data.getBytes("UTF-8"));
            return HexStringByte.byteToHex(signet.sign());
        } catch (Exception e) {
后面还有 346 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。