根据PKCS8编码的数据创建任何PrivateKey实例(RSA,DSA或EC)

时间:2018-08-21 14:41:22

标签: java rsa ecdsa java-security pkcs#8

我有一个代表私钥的未加密PKCS8编码文件。可以是以下任何私钥类型-RSA,DSA或EC。我在ASN1解码器(https://lapo.it/asn1js/)中查看了这些文件,然后在数据中看到了类型(RSA,DSA或EC)。

有没有一种方法可以将PKC8私钥数据读入正确的私钥Java对象,而无需在这样的代码中指定密钥类型-

PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(pkcs8key);
KeyFactory factory = KeyFactory.getInstance("RSA"); // Avoid "RSA" here?
PrivateKey privateKey = factory.generatePrivate(spec);

有没有一种方法可以避免在KeyFactory.getInstance("RSA")中指定算法?因为它可以在PKCS8数据中找到,所以不应该根据PKCS8EncodedKeySpec确定它吗?

示例未加密的PKCS8数据及其ASN1解码示例,它们显示了密钥类型-

DSA-link

EC-link

RSA-link

1 个答案:

答案 0 :(得分:0)

这可以通过BouncyCastle API来实现-

value_limit = 100
num_of_records = Input from service
num_of_pages = int(math.ceil(num_of_records / value_limit))
pages = [i for i in range(0, num_of_pages)]
for page in pages:
    ....
    value_offset = page * value_limit
    Generate URL
    ....