且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

从文件加载 RSA 公钥

更新时间:2023-01-18 09:58:47

以下相关信息来自Zaki 提供的链接.

Below is the relevant information from the link which Zaki provided.

生成 2048 位 RSA 私钥

Generate a 2048-bit RSA private key

$ openssl genrsa -out private_key.pem 2048

将私钥转换为 PKCS#8 格式(以便 Java 可以读取它)

Convert private Key to PKCS#8 format (so Java can read it)

$ openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key.pem -out private_key.der -nocrypt

以DER格式输出公钥部分(以便Java可以读取)

Output public key portion in DER format (so Java can read it)

$ openssl rsa -in private_key.pem -pubout -outform DER -out public_key.der

私钥

import java.nio.file.*;
import java.security.*;
import java.security.spec.*;

public class PrivateKeyReader {

  public static PrivateKey get(String filename)
    throws Exception {

    byte[] keyBytes = Files.readAllBytes(Paths.get(filename));

    PKCS8EncodedKeySpec spec =
      new PKCS8EncodedKeySpec(keyBytes);
    KeyFactory kf = KeyFactory.getInstance("RSA");
    return kf.generatePrivate(spec);
  }
}

公钥

import java.nio.file.*;
import java.security.*;
import java.security.spec.*;

public class PublicKeyReader {

  public static PublicKey get(String filename)
    throws Exception {
    
    byte[] keyBytes = Files.readAllBytes(Paths.get(filename));

    X509EncodedKeySpec spec =
      new X509EncodedKeySpec(keyBytes);
    KeyFactory kf = KeyFactory.getInstance("RSA");
    return kf.generatePublic(spec);
  }
}