Sample code for 30+ languages & platforms
Java

Encrypt File using X.509 Certificate using AES in CBC Mode

See more Encryption Examples

Demonstrates how to encrypt a file using an X.509 Certificate's public key, where the underlying bulk encryption algorithm is 128-bit AES in CBC mode. (The underlying bulk encryption algorithm can be specified to be other algorithms/strengths.)

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.Cert;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Crypt2;

public class ChilkatExample {

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

        Crypt2 crypt = new Crypt2();

        // Use public-key cryptography for encryption.
        crypt.setCryptAlgorithm("pki");

        // Get an X.509 certificate to use for encrypting.
        // Note: Chilkat provides many different ways of loading a certificate, from many different formats,
        // or if on Windows, from the installed certificates on the system.
        // This example simply loads a certificate from a file.
        // Also, for encryption, only the public key is needed.  Digital certificates embed the public key
        // within the X.509 format itself.  Therefore, if you have a certificate, you also have the public key.
        Cert cert = new Cert();
        try {
            cert.loadFromFile("qa_data/certs/testCert.cer");

            crypt.setEncryptCert(cert);

            // Indicate the underlying bulk encryption algorithm to be used:
            crypt.setPkcs7CryptAlg("aes");
            crypt.setKeyLength(128);

            // Note: When doing public-key encryption the underlying bulk symmetric cipher mode will always be CBC. (at least with Chilkat...)

            // There's one last option that could be set.  If is the RSA encryption encryption/padding scheme.
            // By default, RSAES_PKCS1-V1_5 is used.  If desired, the OaepPadding property could be set to true to
            // use RSAES_OAEP.  (We'll leave it set at the default value of false)
            crypt.setOaepPadding(false);

            // Everything is specified.  Now just encrypt...
            // The output is PKCS7 in binary DER format.
            crypt.ckEncryptFile("qa_data/hamlet.xml", "qa_output/hamlet.p7");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("Finished.");
    }
}