gpt4 book ai didi

java - 如何在X25519中为PrivateKey生成PublicKey?

转载 作者:太空宇宙 更新时间:2023-11-04 09:18:59 24 4
gpt4 key购买 nike

我目前正在使用基于 X25519 key 的加密。

我的问题基本上是如何从现有的 X25519 PrivateKey 派生 PublicKey

我在XDHKeyPairGenerator中找到了代码:

BigInteger publicKey = ops.computePublic(privateKey.clone());

但是这个包是特定于平台的,因此无法访问。而且我找不到通过可公开访问的接口(interface)来完成此操作的方法。

最佳答案

到目前为止,我只发现了一种通过 JDK 提供的接口(interface)来实现此目的的方法(不使用任何其他库,如 Bouncy CaSTLe 或 Google Tink):

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();
}

这不是一个非常优雅的解决方案,但它无需任何第三方库即可工作,而且我找不到任何其他方法。

关于java - 如何在X25519中为PrivateKey生成PublicKey?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58583774/

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