7

目前,我正在使用这种方法创建 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)
4

2 回答 2

5

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

于 2015-04-22T07:30:12.103 回答
0

KeyPairGenerator的文档说这样initialize(int, SecureRandom)做:

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

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

于 2015-04-22T00:16:47.297 回答