Java >> Java tutorial >  >> Tag >> private

Sådan valideres et offentligt og privat nøglepar i Java

Du kan kontrollere, om et nøglepar matcher, ved at

  • opretter en udfordring (tilfældig bytesekvens af tilstrækkelig længde)
  • signering udfordringen med den private nøgle
  • bekræfter signaturen ved hjælp af den offentlige nøgle

Dette giver dig en tilstrækkelig høj sikkerhed (næsten sikkerhed), at et nøglepar matcher, hvis signaturbekræftelsen er ok, og en absolut sikkerhed for, at et nøglepar ellers ikke matcher.

Eksempelkode:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(2048);

KeyPair keyPair = keyGen.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();

// create a challenge
byte[] challenge = new byte[10000];
ThreadLocalRandom.current().nextBytes(challenge);

// sign using the private key
Signature sig = Signature.getInstance("SHA256withRSA");
sig.initSign(privateKey);
sig.update(challenge);
byte[] signature = sig.sign();

// verify signature using the public key
sig.initVerify(publicKey);
sig.update(challenge);

boolean keyPairMatches = sig.verify(signature);

Java tag