我有带有“ key”扩展名的私钥文件。我知道它是由“ Admin-PKI”程序生成的。我必须将其作为Java中的PrivateKey类型的对象读取才能用于数字签名生成。我尝试在文本编辑器中将其打开,但是没有诸如“开始私钥”和“结束私钥”之类的页眉和页脚。我如何知道生成私钥所使用的算法是什么?我可以在不知道算法的情况下做到这一点吗?
最佳答案
下面的代码加载文件key.pem
,您将需要bouncycastle库(http://bouncycastle.org/)
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.security.KeyPair;
import java.security.Security;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.openssl.PEMReader;
public class LoadKey {
public static void main(String [] args) throws Exception {
Security.addProvider(new BouncyCastleProvider());
KeyPair keyPair = readKeyPair(new File("key.pem"));
}
private static KeyPair readKeyPair(File privateKey) throws IOException {
FileReader fileReader = new FileReader(privateKey);
PEMReader r = new PEMReader(fileReader);
try {
return (KeyPair) r.readObject();
} catch (IOException ex) {
throw new IOException("The private key could not be decrypted", ex);
} finally {
r.close();
fileReader.close();
}
}
}
编译并运行
javac -cp bcprov-jdk16-146.jar:. LoadKey.java
java -cp bcprov-jdk16-146.jar:. -ea LoadKey