将 RSA PKCS1 私钥字符串转换为 Java PrivateKey 对象

zzc*_*hua 5 java rsa private-key

我有一个存储为字符串的 RSA 私钥,我需要将其转换为 PrivateKey 对象以与 API 一起使用。我可以找到人们从私钥文件转换为字符串的例子,但反过来不行。

我设法将它转换为 PrivateKey 对象,但它在 PKCS8 中,当我需要它是 PKCS1 时,我知道 Java 没有 PKCS1EncodedKeySpec

byte[] key64 = Base64.decodeBase64(privateKeyString.getBytes());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
KeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
PrivateKey privateKey = keyFactory.generatePrivate(privateKeySpec);
Run Code Online (Sandbox Code Playgroud)

小智 -2

您可以将 pkcs#1 转换为 pkcs#8

openssl pkcs8 -topk8 -in server.key -nocrypt -out server_pkcs8.key
cat server_pkcs8.key 
-----BEGIN PRIVATE KEY-----
base64_encode xxx
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)