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

我的问题是,基本上,如何从现有的X25519 PublicKey导出PrivateKey

我在XDHKeyPairGenerator中找到了代码:

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


但是此程序包是特定于平台的,因此无法访问。而且我找不到通过公开访问的界面来实现此目的的方法。

最佳答案

您必须将私钥(只是一个很大的数字)与25519曲线生成器点进行标量乘积。

这是python中的一些代码来说明:

from tinyec import registry
import secrets

curve = registry.get_curve('curve25519')

def compress_point(point):
    return hex(point.x) + hex(point.y % 2)[2:]


privKey = secrets.randbelow(curve.field.n)
pubKey = privKey * curve.g //the key step for you...


print("private key:", hex(privKey))
print("public key:", compress_point(pubKey))


如果您让我知道Java库,我会尽力帮助您。

10-02 00:17