public class CryptoExample {
public static void test(){
CryptoExample.aes256();
}
public static void aes256(){
String clearText = 'the quick brown fox jumps over the lazy dog';
//32 byte string. since characters used are ascii, each char is 1 byte.
Blob key = Blob.valueOf('12345678901234567890123456789012');
Blob cipherText = Crypto.encryptWithManagedIV('AES256', key, Blob.valueOf(clearText));
String encodedCipherText = EncodingUtil.base64Encode(cipherText);
System.debug(encodedCipherText);
Blob encodedEncryptedBlob = EncodingUtil.base64Decode(encodedCipherText);
Blob decryptedBlob = Crypto.decryptWithManagedIV('AES256', key, encodedEncryptedBlob);
String decryptedClearText = decryptedBlob.toString();
System.debug(decryptedClearText);
}
}
cHVibGljIGNsYXNzIENyeXB0b0V4YW1wbGUgewoKcHVibGljIHN0YXRpYyB2b2lkIHRlc3QoKXsKICAgIENyeXB0b0V4YW1wbGUuYWVzMjU2KCk7Cn0KCnB1YmxpYyBzdGF0aWMgdm9pZCBhZXMyNTYoKXsKICAgIFN0cmluZyBjbGVhclRleHQgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZyc7CiAgICAvLzMyIGJ5dGUgc3RyaW5nLiBzaW5jZSBjaGFyYWN0ZXJzIHVzZWQgYXJlIGFzY2lpLCBlYWNoIGNoYXIgaXMgMSBieXRlLgogICAgQmxvYiBrZXkgPSBCbG9iLnZhbHVlT2YoJzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyJyk7CiAgICBCbG9iIGNpcGhlclRleHQgPSBDcnlwdG8uZW5jcnlwdFdpdGhNYW5hZ2VkSVYoJ0FFUzI1NicsIGtleSwgQmxvYi52YWx1ZU9mKGNsZWFyVGV4dCkpOwogICAgU3RyaW5nIGVuY29kZWRDaXBoZXJUZXh0ID0gRW5jb2RpbmdVdGlsLmJhc2U2NEVuY29kZShjaXBoZXJUZXh0KTsgCiAgICBTeXN0ZW0uZGVidWcoZW5jb2RlZENpcGhlclRleHQpOwogICAgQmxvYiBlbmNvZGVkRW5jcnlwdGVkQmxvYiA9IEVuY29kaW5nVXRpbC5iYXNlNjREZWNvZGUoZW5jb2RlZENpcGhlclRleHQpOwogICAgQmxvYiBkZWNyeXB0ZWRCbG9iID0gQ3J5cHRvLmRlY3J5cHRXaXRoTWFuYWdlZElWKCdBRVMyNTYnLCBrZXksIGVuY29kZWRFbmNyeXB0ZWRCbG9iKTsKICAgIFN0cmluZyBkZWNyeXB0ZWRDbGVhclRleHQgPSBkZWNyeXB0ZWRCbG9iLnRvU3RyaW5nKCk7CiAgICBTeXN0ZW0uZGVidWcoZGVjcnlwdGVkQ2xlYXJUZXh0KTsKfQp9