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("======================================================="); } }