我与目前基于加密X25519密钥工作。
我的问题是,基本上,如何导出PublicKey
从现有X25519 PrivateKey
?
我发现的代码XDHKeyPairGenerator
:
BigInteger publicKey = ops.computePublic(privateKey.clone());
但是,这个包是特定于平台的,因此无法访问。我找不到这样做通过公开访问接口的方法。
到目前为止,我发现只有一个办法通过JDK提供的接口来做到这一点(不使用像充气城堡或谷歌亭任何附加库):
public class StaticSecureRandom extends SecureRandom {
private final byte[] privateKey;
public StaticSecureRandom(byte[] privateKey) {
this.privateKey = privateKey.clone();
}
@Override
public void nextBytes(byte[] bytes) {
System.arraycopy(privateKey, 0, bytes, 0, privateKey.length);
}
}
public PublicKey generatePublicKeyFromPrivate(PrivateKey privateKey) throws GeneralSecurityException {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(X25519);
keyPairGenerator.initialize(new NamedParameterSpec(X25519), new StaticSecureRandom(getScalar(privateKey)));
return keyPairGenerator.generateKeyPair().getPublic();
}
这不是一个很优雅的解决方案,但它工作没有任何第三方库,我无法找到任何其他方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句