相关疑难解决方法(0)

如何读取.pem文件以获取私钥和​​公钥

我正在编写一小段代码,用于读取存储在.pem文件中的公钥和私钥.我使用以下命令来生成密钥.

下面的命令生成一对密钥.

   $openssl genrsa -out mykey.pem 2048
Run Code Online (Sandbox Code Playgroud)

此命令用于生成私钥

$openssl pkcs8 -topk8 -inform PEM -outform PEM -in mykey.pem \
    -out private_key.pem -nocrypt
Run Code Online (Sandbox Code Playgroud)

和此命令获取公钥.

$ openssl rsa -in mykey.pem -pubout -outform DER -out public_key.der
Run Code Online (Sandbox Code Playgroud)

我写了两个分别读取私钥和公钥的方法.

   public  PrivateKey getPemPrivateKey(String filename, String algorithm) throws Exception {
      File f = new File(filename);
      FileInputStream fis = new FileInputStream(f);
      DataInputStream dis = new DataInputStream(fis);
      byte[] keyBytes = new byte[(int) f.length()];
      dis.readFully(keyBytes);
      dis.close();

      String temp = new String(keyBytes);
      String privKeyPEM = temp.replace("-----BEGIN PRIVATE KEY-----\n", "");
      privKeyPEM = privKeyPEM.replace("-----END …
Run Code Online (Sandbox Code Playgroud)

java openssl pem pkcs#8 x509

63
推荐指数
5
解决办法
15万
查看次数

在Java中将二进制输入流读入单个字节数组

文档说不应该使用available()方法来确定a的大小InputStream.如何InputStream将一个字节数组的整个内容读入?

InputStream in; //assuming already present
byte[] data = new byte[in.available()];
in.read(data);//now data is filled with the whole content of the InputStream
Run Code Online (Sandbox Code Playgroud)

我可以多次读入固定大小的缓冲区,但是,我必须将读取的数据组合成单个字节数组,这对我来说是一个问题.

java inputstream

46
推荐指数
5
解决办法
13万
查看次数

标签 统计

java ×2

inputstream ×1

openssl ×1

pem ×1

pkcs#8 ×1

x509 ×1