如何将私钥从 .der 文件加载到 java 私钥对象中

mon*_*nim 3 java format bouncycastle pkcs#8

我正在编写一个 java 程序来从文件系统中的文件中导入私钥并使用 java 创建一个私钥对象...我可以对.pem格式的文件执行此操作,但是使用 .der 格式,我不知道该做什么做,因为我无法首先检测用于生成密钥的算法。在.pem文件中,我可以从头文件中确定算法,PKCS#1其具有类似
-----BEGIN RSA PRIVATE KEY----
格式的头文件,并使用 bouncycastlepem阅读器用于 PKCS#8 中的那些有头文件
-----BEGIN PRIVATE KEY----- 但 .der 格式的文件不知道 :(
如果有人知道.key格式告诉我
thanx

gtr*_*rig 6

如果您的 DER 文件是 PKCS#8 格式,您可以使用 Java KeyFactory并执行以下操作:

// Read file to a byte array.
String privateKeyFileName = "C:\\myPrivateKey.der";   
Path path = Paths.get(privateKeyFileName);
byte[] privKeyByteArray = Files.readAllBytes(path);

PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privKeyByteArray);

KeyFactory keyFactory = KeyFactory.getInstance("RSA");

PrivateKey myPrivKey = keyFactory.generatePrivate(keySpec);

System.out.println("Algorithm: " + myPrivKey.getAlgorithm());
Run Code Online (Sandbox Code Playgroud)

您提到您可能不知道密钥使用的是什么算法。我确信有比这更优雅的解决方案,但是您可以创建多个KeyFactory对象(每个可能的算法一个)并尝试generatePrivate()对每个对象进行操作,直到您没有得到InvalidKeySpecException.

  • 嗯,如果 PKCS#1 中的 DER 文件,这个策略将不起作用 (2认同)