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

ua7*_*741 7 java encryption android bouncycastle ecdsa

目前,当我使用以下方法创建密钥时

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();
}
Run Code Online (Sandbox Code Playgroud)

KeyPairGenerator有另一种方法,我可以在其中指定keySize,但我不知道如何通过ecSpec.

 public void initialize(int keysize, SecureRandom random)
Run Code Online (Sandbox Code Playgroud)

Pet*_*man 5

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