【问题标题】:How to create ECDSA keypair (256bit) for bitcoin curve (secp256k1) using spongy castle?如何使用海绵城堡为比特币曲线(secp256k1)创建 ECDSA 密钥对(256 位)?
【发布时间】:2015-04-21 17:09:39
【问题描述】:

目前,我正在使用这种方法创建 keyPair

private  KeyPair getKeyPair() throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException {
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance("ECDsA", "SC");
    ECGenParameterSpec ecSpec = new ECGenParameterSpec("secp256k1");
    keyGen.initialize(ecSpec, new SecureRandom());
    return keyGen.generateKeyPair();
}

KeyPairGenerator 有另一种方法,我可以在其中指定 keySize 但我不确定如何传递 keySpecs?

 public void initialize(int keysize, SecureRandom random)

【问题讨论】:

  • 您是否使用任何第三方库与此代码?
  • 是的,海绵城堡图书馆。

标签: java android encryption bouncycastle ecdsa


【解决方案1】:

您的代码已经足够了,并且指定“secp256k1”已经设置了正确的大小。 initialize(int, SecureRandom) 方法是initialize(AlgorithmParameterSpec, SecureRandom)替代方法;你叫一个或另一个,而不是两个。如果您调用指定密钥大小的那个(例如,256),BC 提供者将尝试选择正确大小的默认曲线(对于 256,它将是“prime256v1”,也就是“P-256”或“secp256r1”)。

【讨论】:

    【解决方案2】:

    documentation for KeyPairGenerator 表示 initialize(int, SecureRandom) 这样做:

    使用给定的随机源(和默认参数集)初始化特定密钥大小的密钥对生成器。

    KeyPairGenerator 是一个抽象类,我假设这个“默认参数集”由您正在使用的特定子类确定。您可能会尝试弄清楚您的 KeyPairGenerator 对象到底是什么类,然后查阅该类的文档以了解您可以在哪里设置其默认参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 2015-02-03
      相关资源
      最近更新 更多