gpt4 book ai didi

java - 如何在 Java 中解密私钥(没有 BC openssl)

转载 作者:行者123 更新时间:2023-11-30 08:09:39 24 4
gpt4 key购买 nike

是否可以使用 JCE 和/或 BouncyCaSTLe 提供程序(不使用 openssl 包)解密加密的 RSA(或其他,无关紧要)私钥?

我可以使用 PrivateKeyFactory 读取未加密的 key 。

谷歌搜索让我通过使用应用了密码的 PEMReader(来自 BC openssl bundle)的示例,但是 - 不想使用 openssl bundle,不一定想使用 PEM 格式,我可以使用 PemReader(来自提供程序包)解码 PEM。问题是之后我能用它做什么。

我正在寻找一些 super 函数,或者一系列可以做到这一点的函数,即我不打算解析加密 key 的 ASN1、找出加密方法、通过密码传递输入等.

最佳答案

如果您有二进制格式的加密 PKCS#8 key (即不是 PEM 格式),以下代码显示如何检索私钥:

public PrivateKey decryptKey(byte[] pkcs8Data, char[] password) throws Exception {
PBEKeySpec pbeSpec = new PBEKeySpec(password);
EncryptedPrivateKeyInfo pkinfo = new EncryptedPrivateKeyInfo(pkcs8Data);
SecretKeyFactory skf = SecretKeyFactory.getInstance(pkinfo.getAlgName());
Key secret = skf.generateSecret(pbeSpec);
PKCS8EncodedKeySpec keySpec = pkinfo.getKeySpec(secret);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(keySpec);
}

如果您有 PEM 格式,请删除页眉(第一行)、页脚(最后一行)并将剩余内容从 base64 转换为常规字节数组。

关于java - 如何在 Java 中解密私钥(没有 BC openssl),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com