【问题标题】:Generating ed25519 keys in Java/Kotlin [closed]在 Java/Kotlin 中生成 ed25519 密钥 [关闭]
【发布时间】:2019-12-20 10:13:56
【问题描述】:

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

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

【问题讨论】:

    标签: java kotlin cryptography ecdsa ed25519


    【解决方案1】:

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

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

    Java/Kotlin 中有一个 number 的绑定。

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

    为了回答您关于确定性的问题,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);
    

    【讨论】:

    • 拜托,好家伙,图书馆的推荐是题外话。请投票结束而不是回答问题。注意:我不一定同意此政策。我理解他们为什么拥有它,但我的经验是他们利大于弊。
    • @JamesReinstateMonicaPolk - 我明白,道歉:+1
    猜你喜欢
    • 2022-09-30
    • 1970-01-01
    • 2022-07-26
    • 2022-07-14
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 2019-05-24
    相关资源
    最近更新 更多