如何将带有私有DSA密钥(4096位)的DER文件读入AsymmetricKeyParameter以供DSASigner使用?
我尝试了以下代码:
byte[] privateKeyBytes = FileUtils.readFileToByteArray(new File(
"sign-key-private.der"));
AsymmetricKeyParameter privateKey = PrivateKeyFactory
.createKey(privateKeyBytes);
结果是一个例外:
java.lang.IllegalArgumentException: unknown object in getInstance: org.bouncycastle.asn1.ASN1Integer
at org.bouncycastle.asn1.ASN1Sequence.getInstance(Unknown Source)
at org.bouncycastle.asn1.x509.AlgorithmIdentifier.getInstance(Unknown Source)
at org.bouncycastle.asn1.pkcs.PrivateKeyInfo.<init>(Unknown Source)
at org.bouncycastle.asn1.pkcs.PrivateKeyInfo.getInstance(Unknown Source)
at org.bouncycastle.crypto.util.PrivateKeyFactory.createKey(Unknown Source)
at test.security.core.Program.main(Program.java:41)
答案 0 :(得分:0)
我最终使用的解决方法是将密钥转换为PEM格式并使用以下内容:
@Cleanup
FileReader privateKeyReader = new FileReader(new File("key.pem"));
@Cleanup
PEMParser parser = new PEMParser(privateKeyReader);
PEMKeyPair keyPair = (PEMKeyPair) parser.readObject();
AsymmetricKeyParameter privateKey = PrivateKeyFactory
.createKey(keyPair.getPrivateKeyInfo());
AsymmetricKeyParameter publicKey = PublicKeyFactory
.createKey(keyPair.getPublicKeyInfo());