SM2 (非对称加密)

SM2用于安全的密钥交换和数字签名。它需要一对密钥(公钥和私钥)。在实际业务中,后端负责生成密钥对,公钥交给前端加密数据,私钥留在后端解密

复制代码
import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.SM2;

public void testSM2() {
    // 1. 生成密钥对
    SM2 sm2 = SmUtil.sm2();
    String privateKey = sm2.getPrivateKeyBase64(); // Base64格式私钥
    String publicKey = sm2.getPublicKeyBase64();   // Base64格式公钥
    System.out.println("Public Key: " + publicKey);
    System.out.println("Private Key: " + privateKey);
    
    // 假设这是前端用公钥加密后发过来的密文
    String data = "待签名的订单号: 20230520001";
    
    // 2. 私钥签名
    String sign = sm2.signHex(HexUtil.encodeHexStr(data));
    System.out.println("签名: " + sign);
    
    // 3. 公钥验签
    boolean verify = sm2.verifyHex(HexUtil.encodeHexStr(data), sign);
    System.out.println("验签结果: " + verify);
    
    // ---------- 针对请求参数的加解密示例 ----------
    // 模拟前端传参: 明文参数
    String plainParam = "userId=123&money=100";
    
    // 后端(接收方)使用私钥解密
    // 注意: 实际使用时,需要将前端发来的密文传入
    // String decrypted = sm2.decryptStr(encryptedFromFrontend, KeyType.PrivateKey);
}
相关推荐
————A11 小时前
Agent 接收用户上传文件
人工智能·笔记·python·状态模式
果果燕2 天前
实习笔记(五)面板 board 按钮状态解析任务
状态模式
程序员小八7772 天前
后端转全栈:前端思维转变(Vue 视角)
前端·vue.js·状态模式
梦想的旅途22 天前
基于企业微信API的微应用前端与后端架构设计
前端·状态模式·企业微信
烟漠河洛2 天前
海外仓库存周转慢的破局点在于重构多仓数据同步架构
重构·状态模式
许彰午2 天前
13-describe元数据输出
java·低代码·架构·状态模式
布莱克6053 天前
如何实现断点续传和分片上传?
网络·tcp/ip·状态模式
leoZ2313 天前
AI+前端提效- 06 AI辅助调试排错:前端报错、白屏、兼容问题极速定位
前端·人工智能·chatgpt·状态模式·超分辨率重建·openvino·dreamfusion
dsyuan0013 天前
ak-design 仿钉钉流程设计引擎图
钉钉·状态模式
国科安芯4 天前
轨道供电韧性:ASP4644四通道降压架构在低轨卫星平台电源管理中的适用性分析
运维·网络·数据库·嵌入式硬件·架构·状态模式·低轨卫星星座