Как создать ECDSA keypair (256bit) для Bitcoin curve (secp256k1) с помощью spongy castle?
в настоящее время, когда я создаю ключ, используя следующий метод
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)
2 ответов
ваш код уже достаточен, и указание "secp256k1" уже устанавливает правильный размер. The initialize(int, SecureRandom)
метод альтернатива до initialize(AlgorithmParameterSpec, SecureRandom)
; вы называете одно или другое, а не оба. Если вы вызываете тот, который указывает keysize (скажем, 256), поставщик BC попытается выбрать кривую по умолчанию правильного размера (для 256 это будет "prime256v1" a.к. a. "P-256" или "secp256r1").
на документация для KeyPairGenerator говорит о том, что initialize(int, SecureRandom)
Это:
инициализирует генератор пар ключей определенного размера с заданным источником случайности (и набором параметров по умолчанию).
KeyPairGenerator является абстрактным классом, и я предполагаю, что этот "набор параметров по умолчанию" определяется конкретным подклассом, который вы используете. Вы можете попытаться выяснить, какой класс является вашим объектом KeyPairGenerator, и затем обратитесь к документации этого класса, чтобы узнать, где вы можете установить параметры по умолчанию.