gpt4 book ai didi

java - 在不知道 key 算法的情况下从 key 字节获取 PublicKey

转载 作者:行者123 更新时间:2023-11-30 02:36:30 25 4
gpt4 key购买 nike

我有一个包含编码公钥的字节数组。我不知道关键算法。我想获取 PublicKey 对象。

我得到的是:

import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
import org.bouncycastle.crypto.util.PublicKeyFactory;

AsymmetricKeyParameter keyParameters = PublicKeyFactory.createKey(keyBytes);

keyParameters 类可以是 RSAKeyParameters、ECPublicKeyParameters...所以现在我可以知道 key 算法了。

然后:

KeyFactory keyFactory = KeyFactory.getInstance(keyAlgorithm);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
PublicKey publicKey = keyFactory.generatePublic(keySpec);

但是我不知道是否有更直接的方法来获取PublicKey。我的意思是,是否有一种直接的方法可以从 key 字节获取 PublicKey,而不需要获取第一个 AmetryKeyParameter(并且不需要手动解码 key 字节)?

最佳答案

这是一种直接的方法(使用 Bouncy CaSTLe API):

public PublicKey publicKeyParse(byte[] publicKeyBytes) {
InputStream pgpIn = PGPUtil.getDecoderStream(new ByteArrayInputStream(publicKeyBytes));
PGPObjectFactory pgpFact = new PGPObjectFactory(pgpIn, new JcaKeyFingerprintCalculator());
PGPPublicKeyRing pgpSecRing = (PGPPublicKeyRing) pgpFact.nextObject();
PGPPublicKey publicKey = pgpSecRing.getPublicKey();
JcaPGPKeyConverter converter = new JcaPGPKeyConverter();
Provider bcProvider = new BouncyCastleProvider();
converter.setProvider(bcProvider);
return converter.getPublicKey(publicKey);
}

关于java - 在不知道 key 算法的情况下从 key 字节获取 PublicKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42911637/

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