Files
javademos/java21-features/src/KemDemo.java
T

21 lines
1.0 KiB
Java

import javax.crypto.*;
import java.security.*;
import java.util.Arrays;
/** JEP 452 (final): Key Encapsulation Mechanism API, with the DHKEM implementation that ships in 21. */
public class KemDemo {
public static void main(String[] args) throws Exception {
KeyPairGenerator g = KeyPairGenerator.getInstance("X25519");
KeyPair kp = g.generateKeyPair();
KEM kem = KEM.getInstance("DHKEM");
KEM.Encapsulator enc = kem.newEncapsulator(kp.getPublic());
KEM.Encapsulated e = enc.encapsulate();
SecretKey sender = e.key();
SecretKey receiver = kem.newDecapsulator(kp.getPrivate()).decapsulate(e.encapsulation());
System.out.println("algorithm : " + kem.getAlgorithm());
System.out.println("secrets equal : " + Arrays.equals(sender.getEncoded(), receiver.getEncoded()));
System.out.println("secret length : " + sender.getEncoded().length + " bytes");
System.out.println("ciphertext length: " + e.encapsulation().length + " bytes");
}
}