yangys
2025-07-04 d0e196b4c6f302b9d571d6220471d15e2b97c527
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package org.springblade.test;
 
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
import org.bouncycastle.util.encoders.Hex;
import org.springblade.core.tool.utils.SM2Util;
import org.springblade.core.tool.utils.StringPool;
 
/**
 * 国密算法生成器
 *
 * @author Chill
 */
public class Sm2KeyGenerator {
 
    public static void main(String[] args) {
        System.out.println("================ blade.oauth2 配置如下 =================");
        AsymmetricCipherKeyPair keyPair = SM2Util.generateKeyPair();
        String publicKey = SM2Util.getPublicKeyString(keyPair);
        String privateKey = SM2Util.getPrivateKeyString(keyPair);
        System.out.println("#blade配置 \n" +
            "blade:\n" +
            "  oauth2:\n" +
            "    enabled: true\n" +
            "    public-key: " + publicKey + "\n" +
            "    private-key: " + privateKey);
        System.out.println("=======================================================");
        System.out.println(StringPool.EMPTY);
        System.out.println("============== saber website.js 配置如下 ===============");
        System.out.println("//saber配置\n" +
            "oauth2: {\n" +
            "  publicKey: '" + publicKey + "',\n" +
            "}");
        System.out.println("=======================================================");
        System.out.println(StringPool.EMPTY);
        System.out.println("============== 密码:[admin] 加密流程如下 ================");
        String password = "admin";
        byte[] encryptedData = SM2Util.encrypt(password, publicKey);
        String decryptedText = SM2Util.decrypt(encryptedData, privateKey);
        System.out.println("加密前: " + password);
        System.out.println("加密后: " + Hex.toHexString(encryptedData));
        System.out.println("解密后: " + decryptedText);
        System.out.println("请注意: 此密文为前端加密后调用token接口的密码参数");
        System.out.println("=======================================================");
    }
 
}