如何使用spongycastle为比特币曲线(secp256k1)创建ECDSA密钥对(256位)?

问题描述 投票:7回答:2

目前,我正在使用此方法创建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
2个回答
5
投票

您的代码已经足够,指定“secp256k1”已经设置了正确的大小。 initialize(int, SecureRandom)方法是initialize(AlgorithmParameterSpec, SecureRandom)的替代方法;你打电话给一个或另一个,而不是两个。如果你调用指定keysize的那个(比如256),BC提供者将尝试选择正确大小的默认曲线(对于256,它将是“prime256v1”a.k.a。“P-256”或“secp256r1”)。


0
投票

documentation for KeyPairGeneratorinitialize(int, SecureRandom)这样做:

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

KeyPairGenerator是一个抽象类,我假设这个“默认参数集”由您正在使用的特定子类决定。您可能会尝试找出KeyPairGenerator对象的实际类,然后查阅该类的文档以了解可以在何处设置其默认参数。

© www.soinside.com 2019 - 2024. All rights reserved.