0

secp192r1 曲線を使用して ECC 公開鍵と秘密鍵を生成しました。パブリックの場合は 75、エンコードされたプライベート キーの配列の長さは 125 です。秘密鍵が公開鍵よりも長いのはなぜですか? 秘密鍵が公開鍵よりも 2 倍長くないのはなぜですか? secp192r1 のために秘密鍵が 192 ビット = 24 バイトではないのはなぜですか?

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

ECNamedCurveParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("secp192r1");

KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC");
g.initialize(ecSpec, new SecureRandom());
KeyPair pair = g.generateKeyPair();

System.out.println(pair.getPublic().getEncoded().length);
System.out.println(pair.getPrivate().getEncoded().length);
4

1 に答える 1

0

以下のコード フラグメントは、24 バイトの秘密鍵を出力します。

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

ECNamedCurveParameterSpec spec = ECNamedCurveTable.getParameterSpec("secp192r1");

KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC");
g.initialize(spec, new SecureRandom());
KeyPair pair = g.generateKeyPair();
ECPrivateKey ecPrivateKey = (ECPrivateKey)pair.getPrivate();

System.out.println(ecPrivateKey.getS().toByteArray().length);
于 2016-06-01T15:09:10.147 に答える