Sample code for 30+ languages & platforms
Java

Encrypt MIME using RSAES-OAEP with SHA256 and AES-128 content encryption

See more MIME Examples

Demonstrates how to encrypt MIME using RSAES-OAEP with SHA256 and AES-128 content encryption.

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

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.Cert;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Mime;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        // This requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Mime mime = new Mime();

        // Create a MIME message to encrypt.
        mime.newMultipartMixed();
        mime.addHeaderField("someHeader1", "Some value 1");
        mime.addHeaderField("someHeader2", "Some value 2");

        Mime part0 = new Mime();
        part0.addHeaderField("hdrA", "Some value A");
        part0.addHeaderField("hdrB", "Some value B");
        part0.setContentType("text/plain");
        part0.setBody("This is the plain-text body.");

        Mime part1 = new Mime();
        part1.addHeaderField("hdrX", "Some value X");
        part1.addHeaderField("hdrY", "Some value Y");
        part1.setContentType("text/xml");
        part1.setBody("<a>This is the XML body</a>");

        mime.appendPart(part0);
        mime.appendPart(part1);

        // The MIME to be encrypted:
        StringBuilder sbMime = new StringBuilder();
        mime.getMimeSb(sbMime);
        System.out.println(sbMime.getAsString());

        //     Content-Type: multipart/mixed; boundary="------------080303020600020604010008"
        //     someHeader1: Some value 1
        //     someHeader2: Some value 2
        //
        //     --------------080303020600020604010008
        //     hdrA: Some value A
        //     hdrB: Some value B
        //     Content-Type: text/plain
        //
        //     This is the plain-text body.
        //     --------------080303020600020604010008
        //     hdrX: Some value X
        //     hdrY: Some value Y
        //     Content-Type: text/xml
        //
        //     <a>This is the XML body</a>
        //     --------------080303020600020604010008--
        //

        // Load an RSA-based certificate.
        // (Encrypting MIME only requires the public key.  Decrypting MIME requires the private key.)
        Cert cert = new Cert();
        try {
            cert.loadFromFile("qa_data/rsaes-oaep/cert.pem");

            // Set the email object properties to indicate the desired encryption.
            mime.setPkcs7CryptAlg("aes");
            // If AES-256 is desired, set the following property to 256.
            mime.setPkcs7KeyLength(128);
            mime.setOaepPadding(true);
            // Other choices for the OAEP hash algorithm are "sha1", "sha384", and "sha512"
            mime.setOaepHash("sha256");

            // Encrypt the MIME (to create S/MIME, which stands for "Secure MIME")
            mime.encrypt(cert);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("---------------");
        System.out.println("Encrypted MIME:");
        System.out.println("---------------");
        System.out.println(mime.getMime());

        System.out.println("Success.");

        // ---------------------------------------------------
        // This is sample output for RSAES-OAEP encrypted MIME:
        // ---------------------------------------------------

        // Content-Type: application/x-pkcs7-mime; name="smime.p7m"; smime-type="enveloped-data"
        // someHeader1: Some value 1
        // someHeader2: Some value 2
        // Content-Disposition: attachment; filename="smime.p7m"
        // Content-Transfer-Encoding: base64
        //
        // MIIDvAYJKoZIhvcNAQcDoIIDrTCCA6kCAQAxggGgMIIBnAIBADB1MGgxCzAJBgNVBAYTAlVTMQsw
        // CQYDVQQIDAJJTDEQMA4GA1UEBwwHV2hlYXRvbjEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ
        // dHkgTHRkMRcwFQYDVQQDDA5DaGlsa2F0V2lkZ2V0cwIJAMRwugDmvniwMBwGCSqGSIb3DQEBBzAP
        // oA0wCwYJYIZIAWUDBAIBBIIBAFaUL1ga1bOrdqYKcMm+FHUacBvzfBxk0fnPA0AMBdN8BvTWT3CN
        // YuqBhjOGyq0FpYD9pVZybUuFMCVsVyIW2O62HnsOK58YaPEUUcdH2sI+yjqX9UAn0P0nVDSsVdeK
        // W8x9kMfZg+3UP+y1q+lu7VRJO3f2C9oLQpTkc4VW4n7UOcUI0waykLCjCTL8lFDb7/J3GeuMKyhH
        // 5riNz50kpbzqn7m2Ks9yA+QmcTdXclclGFr2vwEUFzSdT2pxh/vaUrogCxkYWbQ2eV7vZg6O4kV0
        // aqHBqySkPTAzHKiHH8K8GVdlTuJ8350CpICa4T8w7/Ht5I7dyOPPKy4C+rVtrvcwggH+BgkqhkiG
        // 9w0BBwEwHQYJYIZIAWUDBAECBBDTC2WNBN+z2I47/4Feu9YqgIIB0MZvl3nC/q/Wzil6HtfQTr12
        // Q5moHY+ORzAa1P9XvX2ZUFhW530mV395mQw/A4o4ekmX9eRPEZquYzZPLT8hNeZIuNdhpcSQUmad
        // rKnKkR0wKJ3jJ3LhOIohVBQSYs8kVDZKq6lJBIznlsurFelZoNEhyRschhteDZx5rb7fCe8c2+/O
        // DHxaqaHCAzm/Bd7kcg6FFfuTZy3tu0PgP5IsXN4OFA3kkvwjAs4XsVS8jdIcmDNBkYieE8WmJOIm
        // Mz7mh/CHWLgWfGKa0Dkb9RcbFgLwYNT3GzuXFw9XPbKkEZjEAtJajWbN6P0WQl96YYd9qZxUpGxZ
        // zjTHEYzViUdUXolfpLufttrRXyxN1RFWhNFMFbv66xYqklMSgpdM/Mbk+EuvX6eXayDPvDBpfYMw
        // NoRAzv1Ony2c0ez9rBemJICicxAzpuvHbRxdjYs63Dnv+TYgpBK12AxWWpPIjXvw0WQKgTC3Tg8s
        // EnuGhpENqso/clJBEBSn4+2WhYtYbdI5sVme67lvqQl1Xxy3r18SWaQbyDOwgYi1E+54lMDOxMy0
        // y0FPHk5pP45DnXWj+XORPp5LhuZr5mf62YOXSSUwR5P0cXy4Rc+pN5lhRQPCf5z2
    }
}