从String转换为公钥/私钥时出现algid解析错误

时间:2016-12-09 00:43:59

标签: java security public-key-encryption private-key

我目前有一个公钥/私钥对作为两个单独的字符串,我试图转换回公钥/私钥格式。

我目前正在读取.auth文件中的字符串,而不是公钥文件和私钥文件,因此我无法使用openssl pkcs8 -topk8...来消除algid解析错误。我正在读这样的键:

BufferedReader br = new BufferedReader(new FileReader(authFileName));
String publicK = br.readLine();
String privateK = br.readLine();
br.close();

从那里开始,我正在使用Base64 Decoder将文件转换回字节数组,如下所示:

byte[] privateBytes = Base64.getDecoder().decode(privateK);
byte[] publicBytes = Base64.getDecoder().decode(publicK);

最后,我正在使用密钥工厂将这些字节数组转换为公钥和私钥。这是代码:

KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(privateBytes));
PublicKey publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(publicBytes));

当我的代码尝试使用密钥工厂生成私钥和公钥时,就是它抛出InvalidKeyException algid解析错误

我在网上看过,发现有很多人说要添加the following line to my code should fix the problem

Security.addProvider(new BouncyCastleProvider());

但事实并非如此。除了充气城堡和openssl之外,还有其他解决方案我应该尝试为其他人工作吗?

0 个答案:

没有答案