// Generate an AES key for the purpose of this sample.
// Normally this key should be stored in a protected custom setting
// or an encrypted field on a custom object
Blob cryptoKey = Crypto.generateAesKey(256);
// Generate the data to be encrypted.
Blob data = Blob.valueOf('Test data to encrypted');
// Encrypt the data and have Salesforce.com generate the initialization vector
Blob encryptedData = Crypto.encryptWithManagedIV('AES256', cryptoKey, data);
// Decrypt the data - the first 16 bytes contain the initialization vector
Blob decryptedData = Crypto.decryptWithManagedIV('AES256', cryptoKey, encryptedData);
// Decode the decrypted data for subsequent use
String decryptedDataString = decryptedData.toString();
Ly8gR2VuZXJhdGUgYW4gQUVTIGtleSBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzYW1wbGUuIAovLyBOb3JtYWxseSB0aGlzIGtleSBzaG91bGQgYmUgc3RvcmVkIGluIGEgcHJvdGVjdGVkIGN1c3RvbSBzZXR0aW5nIAovLyBvciBhbiBlbmNyeXB0ZWQgZmllbGQgb24gYSBjdXN0b20gb2JqZWN0CkJsb2IgY3J5cHRvS2V5ID0gQ3J5cHRvLmdlbmVyYXRlQWVzS2V5KDI1Nik7CgovLyBHZW5lcmF0ZSB0aGUgZGF0YSB0byBiZSBlbmNyeXB0ZWQuCiBCbG9iIGRhdGEgPSBCbG9iLnZhbHVlT2YoJ1Rlc3QgZGF0YSB0byBlbmNyeXB0ZWQnKTsKLy8gRW5jcnlwdCB0aGUgZGF0YSBhbmQgaGF2ZSBTYWxlc2ZvcmNlLmNvbSBnZW5lcmF0ZSB0aGUgaW5pdGlhbGl6YXRpb24gdmVjdG9yCkJsb2IgZW5jcnlwdGVkRGF0YSA9IENyeXB0by5lbmNyeXB0V2l0aE1hbmFnZWRJVignQUVTMjU2JywgY3J5cHRvS2V5LCBkYXRhKTsKLy8gRGVjcnlwdCB0aGUgZGF0YSAtIHRoZSBmaXJzdCAxNiBieXRlcyBjb250YWluIHRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IKIEJsb2IgZGVjcnlwdGVkRGF0YSA9IENyeXB0by5kZWNyeXB0V2l0aE1hbmFnZWRJVignQUVTMjU2JywgY3J5cHRvS2V5LCBlbmNyeXB0ZWREYXRhKTsKCi8vIERlY29kZSB0aGUgZGVjcnlwdGVkIGRhdGEgZm9yIHN1YnNlcXVlbnQgdXNlCiBTdHJpbmcgZGVjcnlwdGVkRGF0YVN0cmluZyA9IGRlY3J5cHRlZERhdGEudG9TdHJpbmcoKTs=