// 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();
Ly8gR2VuZXJhdGUgYW4gQUVTIGtleSBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzYW1wbGUuIAovLyBOb3JtYWxseSB0aGlzIGtleSBzaG91bGQgYmUgc3RvcmVkIGluIGEgcHJvdGVjdGVkIC8vY3VzdG9tIHNldHRpbmcgCi8vIG9yIGFuIGVuY3J5cHRlZCBmaWVsZCBvbiBhIGN1c3RvbSBvYmplY3QKQmxvYiBjcnlwdG9LZXkgPSBDcnlwdG8uZ2VuZXJhdGVBZXNLZXkoMjU2KTsKCi8vIEdlbmVyYXRlIHRoZSBkYXRhIHRvIGJlIGVuY3J5cHRlZC4KIEJsb2IgZGF0YSA9IEJsb2IudmFsdWVPZignVGVzdCBkYXRhIHRvIGVuY3J5cHRlZCcpOwovLyBFbmNyeXB0IHRoZSBkYXRhIGFuZCBoYXZlIFNhbGVzZm9yY2UuY29tIGdlbmVyYXRlIHRoZSAvL2luaXRpYWxpemF0aW9uIHZlY3RvcgpCbG9iIGVuY3J5cHRlZERhdGEgPSBDcnlwdG8uZW5jcnlwdFdpdGhNYW5hZ2VkSVYoJ0FFUzI1NicsIGNyeXB0b0tleSwgZGF0YSk7Ci8vIERlY3J5cHQgdGhlIGRhdGEgLSB0aGUgZmlyc3QgMTYgYnl0ZXMgY29udGFpbiB0aGUgLy9pbml0aWFsaXphdGlvbiB2ZWN0b3IKIEJsb2IgZGVjcnlwdGVkRGF0YSA9IENyeXB0by5kZWNyeXB0V2l0aE1hbmFnZWRJVignQUVTMjU2JywgY3J5cHRvS2V5LCBlbmNyeXB0ZWREYXRhKTsKCi8vIERlY29kZSB0aGUgZGVjcnlwdGVkIGRhdGEgZm9yIHN1YnNlcXVlbnQgdXNlCiBTdHJpbmcgZGVjcnlwdGVkRGF0YVN0cmluZyA9IGRlY3J5cHRlZERhdGEudG9TdHJpbmcoKTs=