目录
一、前端公钥加密
二、后端私钥解密
一、前端公钥加密
Nextjs 前端实现RSA公钥加密 JSEncrypt加载问题解决-CSDN博客
二、后端私钥解密
import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Base64;/*** @author Dragon Wu* @since 2024/5/20 14:16* 用于解析前端传来的敏感数据*/
public class DecodeUtil {//签名算法名称private static final String RSA_KEY_ALGORITHM = "RSA";//RSA密钥长度,默认密钥长度是1024,密钥长度必须是64的倍数,在512到65536位之间,不管是RSA还是RSA2长度推荐使用2048//private static final int KEY_SIZE = 2048;//私钥private static final String PRIVATE_KEY = "yours...==";/*** 私钥解密(用于数据解密)** @param data 解密前的字符串* @return 解密后的字符串*/public static String decryptByPrivateKey(String data) throws Exception {//Java原生base64解码byte[] priKey = Base64.getDecoder().decode(PRIVATE_KEY);//创建PKCS8编码密钥规范PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(priKey);//返回转换指定算法的KeyFactory对象KeyFactory keyFactory = KeyFactory.getInstance(RSA_KEY_ALGORITHM);//根据PKCS8编码密钥规范产生私钥对象PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec);//根据转换的名称获取密码对象Cipher(转换的名称:算法/工作模式/填充模式)Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());//用私钥初始化此Cipher对象(解密模式)cipher.init(Cipher.DECRYPT_MODE, privateKey);//对数据解密byte[] decrypt = cipher.doFinal(Base64.getDecoder().decode(data));//返回字符串return new String(decrypt);}}
解密成功!
参考:RSA之前端加密后端解密_前端rsa加密后端解密-CSDN博客