3

私のプログラムでは、Spongy Castle (Android の Bouncy Castle に相当) を使用して、PEM ファイルから EC 秘密鍵を正常に復元できます。ファイルに公開鍵が含まれていないため、秘密鍵から公開鍵を再計算しようとしています。

有効な公開鍵を計算できます。ただし、私の公開鍵には、元の参照 (92 バイト) よりもはるかに多くのデータ (311 バイト) が含まれています。これは、秘密鍵 (152 バイト) よりもさらに多くなります。

公開鍵の圧縮 (?) バージョンを取得するにはどうすればよいですか?

PrivateKey privateKey; // private key from pem file
PublicKey referencePublicKey; // public key in my testing environment, generated with an EC KeyPairGenerator


KeyFactory factory = KeyFactory.getInstance("EC"); // using SpongyCastle provider                     
ECPrivateKeySpec privSpec = factory.getKeySpec(privateKey, ECPrivateKeySpec.class);
ECParameterSpec params = privSpec.getParams();

ECPoint q = params.getG().multiply(privSpec.getD());

ECPublicKeySpec pubSpec = new ECPublicKeySpec(q, params);
PublicKey publicKey = factory.generatePublic(pubSpec);


System.out.println( referencePublicKey.equals(publicKey) );   // true
System.out.println( referencePublicKey.getEncoded().length ); // 92
System.out.println( publicKey.getEncoded().length );          // 311
4

0 に答える 0