【发布时间】:2018-01-20 15:45:29
【问题描述】:
我有一个存储为字符串的 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);
【问题讨论】:
-
如果您的意思是必须接受 PKCS1 RSAPrivateKey(又名 OpenSSL 的“传统”格式)的 base64(~ PEM 或 DER)并且无法修复它:如果清楚,请参阅stackoverflow.com/questions/3243018/… 或我在 stackoverflow.com/questions/23709898/… 的 hack 加密 PEM(不太可能?)请参阅 stackoverflow.com/questions/44681737/… 或 stackoverflow.com/questions/35276820/…
-
你的第二段没有任何意义。
-
这里有一个解决方案:stackoverflow.com/a/55339208/975386
标签: java rsa private-key