E C генерация пар ключей в java - getPubli c () и getPrivate () имеют одинаковый вывод - PullRequest
0 голосов
/ 01 февраля 2020

Я новичок ie в криптографии и пытаюсь сгенерировать пару ключей E C, используя BouncyCastle в java, а ключ publi c такой же, как закрытый ключ.

См. Код ниже ..

public static void main(String[] args) {

    Security.addProvider(new BouncyCastleProvider());
    System.out.println("Starting...");
    String name = "secp256k1";
    try {
        KeyPairGenerator kpg = KeyPairGenerator.getInstance("ECDSA",BouncyCastleProvider.PROVIDER_NAME);
        kpg.initialize(new ECGenParameterSpec(name));
        KeyPair keyPair = kpg.generateKeyPair();    

        PublicKey pub = keyPair.getPublic();
        PrivateKey prv = keyPair.getPrivate();

        byte[] pubBytes = pub.getEncoded();
        byte[] prvBytes = prv.getEncoded();

        KeyFactory kf = KeyFactory.getInstance("ECDSA", BouncyCastleProvider.PROVIDER_NAME);
        PrivateKey prv_recovered = kf.generatePrivate(new PKCS8EncodedKeySpec(prvBytes));
        PublicKey pub_recovered = kf.generatePublic(new X509EncodedKeySpec(pubBytes));

        System.out.println("Private Key: \n" + prv_recovered.toString());
        System.out.println("Public Key: \n" + pub_recovered.toString());

    } catch(Exception e) {
        e.printStackTrace();
    }
}

Вывод:

Личный ключ:

E C Личный ключ [36: e9: 32: 8f: b1: 96: cb: 7d: eb: a8: 62: f2: ce: fb: 93: d5: 10: c5: 77: aa]

Publi c Ключ:

E C Publi c Ключ [36: e9: 32: 8f: b1: 96: cb: 7d: eb: a8: 62: f2: ce: fb: 93: d5: 10: c5: 77: aa]

Может кто-нибудь объяснить мне, почему это происходит, пожалуйста?

...