【问题标题】:How to generate positive private key from negrative private key for bitcoin in bitcoinj java or kotlin如何在 bitcoinj java 或 kotlin 中从比特币的负私钥生成正私钥
【发布时间】:2021-11-09 19:12:21
【问题描述】:

我在比特币中使用 -13 作为私钥,但私钥无效。如何使用 Bitcoinj 或 java 从 -13 或任何其他负数中获取正私钥并生成相同的地址?

val params = MainNetParams.get()

val b = BigInteger("-13")
val key = ECKey.fromPrivate(b, false)
println(LegacyAddress.fromKey(params, key)) // 122Vo9PeKd4j8zSGBeQHdmks6GnkpycXNz

【问题讨论】:

  • 简短回答:取整数 mod 基点生成的组的顺序。更简短的答案:添加0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141
  • 我不明白数学。它适用于每个负数还是仅适用于-13?能否请您提供 Java 代码?
  • 首先,完全不清楚为什么你甚至有一个负数开头。但它适用于任何整数。 b.mod(new BigInteger("fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141", 16)); 应该会给你你所寻求的答案,如果我理解正确的话。
  • 这些神奇的常数取自SECG paper, section 2.7.1
  • 这些是对数字组的操作,它们映射到诸如 [0..N) 之类的范围。所以说 N = 17 然后 -13 相当于 4 作为-13 mod 17 = 4。 James 刚刚发布了一个 稍微大一点的值 N,特定于 BitCoin 使用的曲线 seck256r1:P

标签: java cryptography bitcoin private-key bitcoinj


【解决方案1】:
b.mod(new BigInteger("115792089237316195423570985008687907852837564279074904382605163141518161494337"))

感谢 cmets 中的president-james-k-polk

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 2014-01-17
    • 2021-08-31
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2019-08-15
    • 1970-01-01
    相关资源
    最近更新 更多