79351272

Date: 2025-01-13 05:59:57
Score: 0.5
Natty:
Report link

ML-KEM using encapsulation/decapsulation instead of encrypt/decrypt. (refer https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.203.pdf)

and I used bouncycastle v1.79

static {
    Security.addProvider(new BouncyCastleProvider());
}

@Test
public void MLKEM_PKCS_Test(){
    try{
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("ML-KEM-512", "BC");
        KeyPair keyPair = keyGen.generateKeyPair();

        PrivateKey privateKey = keyPair.getPrivate();
        System.out.println("Private Key: " + DatatypeConverter.printHexBinary(privateKey.getEncoded()));
        MLKEMPrivateKeyParameters priKey = (MLKEMPrivateKeyParameters) PrivateKeyFactory.createKey(privateKey.getEncoded());
        System.out.println("dk: " + DatatypeConverter.printHexBinary(priKey.getEncoded()));

        PublicKey publicKey = keyPair.getPublic();
        System.out.println("Public Key: " + DatatypeConverter.printHexBinary(publicKey.getEncoded()));
        MLKEMPublicKeyParameters pubKey = (MLKEMPublicKeyParameters)PublicKeyFactory.createKey(publicKey.getEncoded());
        System.out.println("ek: " + DatatypeConverter.printHexBinary(pubKey.getEncoded()));

        MLKEMGenerator mlkemGenerator = new MLKEMGenerator(new SecureRandom());
        SecretWithEncapsulation encaps = mlkemGenerator.generateEncapsulated(pubKey);
        System.out.println("Cipher: "+DatatypeConverter.printHexBinary(encaps.getEncapsulation()));
        System.out.println("secret(encap): " + DatatypeConverter.printHexBinary(encaps.getSecret()));

        MLKEMExtractor mlkemExtractor = new MLKEMExtractor(priKey);
        byte[] secret = mlkemExtractor.extractSecret(encaps.getEncapsulation());
        System.out.println("secret(decap): " + DatatypeConverter.printHexBinary(secret));


    } catch (Exception e) {
        e.printStackTrace();
    }
}
Reasons:
  • Probably link only (1):
  • Long answer (-1):
  • Has code block (-0.5):
  • Low reputation (1):
Posted by: Myungkyu Jung