如何使用海绵城堡为比特币曲线(secp256k1)创建ECDSA密钥对(256位)?
目前,当我使用以下方法创建密钥时
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,但我不确定如何通过ecSpec。
public void initialize(int keysize, SecureRandom random)
您的代码已经足够,指定“secp256k1”已经设置了正确的大小。 initialize(int, SecureRandom)
方法是initialize(AlgorithmParameterSpec, SecureRandom)
的替代方法initialize(AlgorithmParameterSpec, SecureRandom)
; 你打电话给其中一个,而不是两个。 如果你调用指定keysize的那个(比如256),BC提供者将尝试选择正确大小的默认曲线(对于256,它将是“prime256v1”又名“P-256”或“secp256r1”)。
KeyPairGenerator的文档说initialize(int, SecureRandom)
执行此操作:
使用给定的随机源(以及默认参数集)初始化特定密钥大小的密钥对生成器。
KeyPairGenerator是一个抽象类,我假设这个“默认参数集”由您正在使用的特定子类决定。 您可能会尝试找出KeyPairGenerator对象的实际类,然后查阅该类的文档以了解可以在何处设置其默认参数。
- SwitchPreference默认颜色
- 签名APK为Facebook提供不同的Key-Hash
- Android数据绑定NoSuchMethodError
- 尝试listview.getChildAt()时java.lang.NullPointerException
- 如何在Codename One Android项目中为build.gradle添加`apply plugin`以添加本机库?
- 是否存在从Eclipse中的相同代码库维护免费和专业应用程序版本的约定?
- 当我在Android应用程序中使用youtube API滚动屏幕时,如何避免video停止?
- Android设备到PC的套接字连接
- 如何从给定的类项中获取数组?