Sample code for 30+ languages & platforms
Java

JWE with Binary Data

See more JSON Web Encryption (JWE) Examples

Demonstrates how to create a JWE that contains a binary payload (such as a JPG image).

Note: This example requires Chilkat v9.5.0.66 or greater.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.BinData;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.Jwe;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        boolean success = false;

        // This requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        // Note: This example requires Chilkat v9.5.0.66 or greater.

        // Load a JPG file that will be the JWE payload.
        BinData jpgBytes = new BinData();
        jpgBytes.loadFile("qa_data/jpg/starfish.jpg");
        // Make sure your app checks the success/failure of the call to LoadFile..
        System.out.println("Original JPG size = " + jpgBytes.getNumBytes());

        Jwe jwe = new Jwe();

        JsonObject jweProtHdr = new JsonObject();
        jweProtHdr.appendString("alg", "A128KW");
        jweProtHdr.appendString("enc", "A128CBC-HS256");
        jwe.setProtectedHeader(jweProtHdr);

        String aesWrappingKey = "GawgguFyGrWKav7AX4VKUg";
        jwe.setWrappingKey(0, aesWrappingKey, "base64url");

        // Encrypt and return the JWE in sbJwe:
        StringBuilder sbJwe = new StringBuilder();
        try {
            jwe.encryptBd(jpgBytes, sbJwe);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Show the JWE:
        System.out.println(sbJwe.getAsString());
        System.out.println("size of JWE: " + sbJwe.getLength());

        // ---------------------------------------------------------
        // Decrypt to get the original JPG file..

        Jwe jwe2 = new Jwe();
        try {
            jwe2.loadJweSb(sbJwe);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Set the AES wrap key.
        jwe2.setWrappingKey(0, aesWrappingKey, "base64url");

        // Decrypt.
        BinData jpgOriginal = new BinData();
        try {
            jwe2.decryptBd(0, jpgOriginal);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("Decrypted JPG size = " + jpgOriginal.getNumBytes());

        // Save the decrypted JPG to a file.
        try {
            jpgOriginal.writeFile("qa_output/jwe_decrypted_starfish.jpg");
            success = true;
        } catch (ChilkatException e) {
            success = false;
        }

        System.out.println("success = " + success);

        // The output of this program, when tested, was:
        // Original JPG size = 6229
        // eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.9YFz_wteV ... 7Et3hKhpxnKEXw
        // size of JWE: 8473
        // Decrypted JPG size = 6229
        // success = True
    }
}