目前,我正在使用此方法创建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)
答案 0 :(得分:5)
您的代码已足够,并指定" secp256k1"已经设置了正确的尺寸。 initialize(int, SecureRandom)
方法是替代到initialize(AlgorithmParameterSpec, SecureRandom)
;你打电话给一个或另一个,而不是两个。如果你打电话指定密钥大小(例如256),BC提供商将尝试选择正确大小的默认曲线(对于256,它将是" prime256v1" aka" P- 256"或" secp256r1")。
答案 1 :(得分:0)
documentation for KeyPairGenerator表示initialize(int, SecureRandom)
执行此操作:
使用给定的随机源(以及默认参数集)初始化某个密钥大小的密钥对生成器。
KeyPairGenerator是一个抽象类,我假设这个“默认参数集”由您正在使用的特定子类决定。您可能会尝试找出KeyPairGenerator对象的实际类,然后查阅该类的文档以了解可以在何处设置其默认参数。