我目前有一个公钥/私钥对作为两个单独的字符串,我试图转换回公钥/私钥格式。
我目前正在读取.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之外,还有其他解决方案我应该尝试为其他人工作吗?