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();
}

KeyPairGeneratorkeySize を指定できる別の方法がありますが、keySpecs を渡す方法がわかりません。

 public void initialize(int keysize, SecureRandom random)
4

2 に答える 2

5

あなたのコードはすでに十分であり、「secp256k1」を指定すると、すでに正しいサイズが設定されています。このinitialize(int, SecureRandom)メソッドは;の代替です。initialize(AlgorithmParameterSpec, SecureRandom)両方ではなく、どちらか一方を呼び出します。キーサイズ (たとえば 256) を指定するものを呼び出すと、BC プロバイダーは適切なサイズのデフォルト カーブを選択しようとします (256 の場合、「prime256v1」、別名「P-256」または「secp256r1」になります)。

于 2015-04-22T07:30:12.103 に答える
0

KeyPairGeneratorのドキュメントには、これを行うと記載されてinitialize(int, SecureRandom)います。

指定された乱数ソース (および既定のパラメーター セット) を使用して、特定のキーサイズのキー ペア ジェネレーターを初期化します。

KeyPairGenerator は抽象クラスであり、この「既定のパラメーター セット」は、使用している特定のサブクラスによって決定されると想定しています。KeyPairGenerator オブジェクトが実際にどのクラスであるかを把握してから、そのクラスのドキュメントを参照して、デフォルト パラメータを設定できる場所を確認してください。

于 2015-04-22T00:16:47.297 に答える