在Java / Kotlin中生成ed25519密钥

问题描述 投票:0回答:1

我希望在java / kotlin中生成ed25519键。密钥对应具有确定性,因为如果可以提供生成过程中使用的一些种子信息,则它们可以再次生成相同的密钥对。

我知道可以使用助记符来实现这一目标。请告诉我该如何处理。我正在寻找一个知名的库,可以帮助我在Java中实现这一目标。

java kotlin cryptography ecdsa ed25519
1个回答
0
投票

您应该使用libsodium,这是文档的link

[libsodiumDJBNaCl维护最积极的实现,因此,如果您使用ed25519curve25519椭圆曲线加密,则应使用libsodium

number / Java中有绑定的Kotlin

这真的很容易使用,而且很安全,例如,它可以在恒定时间内执行标量乘法。

为了回答有关确定性的问题,libsodium提供了一种从种子生成确定性密钥的机制。注意,您需要确保种子具有足够的熵以确保安全。

您应该从种子调用int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, const unsigned char *seed);generate一个ed25519密钥对。

Here是在Java中提供对该功能的绑定的库:

    /**
     * Deterministically generate a public and secret key.
     * Store the seed somewhere if you want to generate these
     * keys again.
     * @param publicKey Public key will be populated here of size {@link #PUBLICKEYBYTES}.
     * @param secretKey Secret key will be populated here of size {@link #SECRETKEYBYTES}.
     * @param seed A random seed of size {@link #SEEDBYTES}.
     * @return True if generated successfully.
     */
    boolean cryptoKxSeedKeypair(byte[] publicKey, byte[] secretKey, byte[] seed);
© www.soinside.com 2019 - 2024. All rights reserved.