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博客

相关推荐
Rust研习社几秒前
手把手带你使用 Bacon 高效开发应用
后端·rust·编程语言
Nturmoils3 分钟前
书签真正难的不是收藏,而是找回来:我是怎么做这个 Chrome 插件的
javascript·后端·浏览器
XovH3 分钟前
Django 静态文件与媒体文件处理:CSS、JS 与用户上传图片的最佳实践
后端
bruce541104 分钟前
讲讲 RTMate (WebSocket as A Service)中的消息的发布订阅机制
后端·微信小程序
Aaa111114435 分钟前
四类地址 逻辑地址 线性地址 虚拟地址 物理地址
java
小则又沐风a6 分钟前
深入了解进程概念 第二章
java·linux·服务器·前端
EMA7 分钟前
langchain学习指南
后端
程序猿进阶9 分钟前
OpenClaw Mac 安装教程
java·macos·ai·架构·agent·openclaw
喵个咪11 分钟前
单体项目如何“无感”演进微服务?Core+BFF分层架构实践
后端·微服务·架构
升鲜宝供应链及收银系统源代码服务15 分钟前
升鲜宝生鲜配送供应链系统 vs_车辆管理模块开发文档 PRD(一)---升鲜宝生鲜配送供应链管理系统
spring boot·java-ee·生鲜供应链源代码·供应链源代码出售·生鲜配送源代码服务·门店连锁系统源代码·猪肉生产加工系统源代码