SpringBoot 实现私钥解密 前端的公钥加密内容

目录

一、前端公钥加密

二、后端私钥解密


一、前端公钥加密

Nextjs 前端实现RSA公钥加密 JSEncrypt加载问题解决-CSDN博客

二、后端私钥解密

java 复制代码
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博客

相关推荐
梓豪csd29 分钟前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
秋饼30 分钟前
Spring AI 2.1 Message Parts 深度实战:推理签名回放与跨轮记忆持久化的源码级落地
java·ai·技术分享·后端开发
王中阳Go33 分钟前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
thefool1122661 小时前
TCP 1
java·1024程序员节
码事漫谈2 小时前
消除AI幻觉,普通人能做的五件事
后端
paopaokaka_luck3 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
金銀銅鐵4 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
AI人工智能+电脑小能手4 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务
Mk598785 小时前
给 Agent 装上对话框 —— AgentScope-Java 接入 Spring Boot 与 SSE 流式实战
后端
付威20235 小时前
从 Loop 到 Runtime:rpi Agent Loop 与 Cordis 的边界、取舍与组合
后端