跳至主要內容

JWT加解密公私钥更新

2025年1月13日小于 1 分钟

JWT加解密公私钥更新

TDP_SYS_APPLICATION_JWK表中的公私钥用于加解密用户登录凭证,为保护数据安全,建议不同的环境使用不同的公私钥。

生成公私钥

  • 修改代码中的keyId,执行生成新的公私钥

import java.nio.charset.StandardCharsets;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;

public class Test {
  public static void main(String[] args) throws NoSuchAlgorithmException {
    //TODO 设置48位keyId
    String keyId = "oh1d_r_3a71aq1=x17pb8i7_r$u$uyrkvc594s9v2=mady7e";
    if (keyId.length() != 48) {
      System.err.println("keyId长度错误,应为48位");
      System.exit(1);
    }
    KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
    SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
    random.setSeed(keyId.getBytes(StandardCharsets.UTF_8));
    keyPairGen.initialize(2048, random);
    KeyPair keyPair = keyPairGen.generateKeyPair();
    String publicKey = Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded());
    String privateKey = Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded());
    System.out.println("KEY_ID: " + keyId);
    System.out.println("PUBLIC_KEY: " + publicKey);
    System.out.println("PRIVATE_KEY: " + privateKey);
  }
}

修改数据库中的公私钥

  • 按照输出结果更新TDP_SYS_APPLICATION_JWK表中的KEY_IDPUBLIC_KEYPRIVATE_KEY数据

    提示

    修改后需要重启服务才能生效

上次编辑于: 2025/2/11 14:42:45
贡献者: zhangshuaic