stringify: function(cipherParams) {
// create json object with ciphertext
var jsonObj = { ct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64) };
// optionally add iv or salt
jsonObj.iv = cipherParams.iv.toString();
jsonObj.s = cipherParams.salt.toString();
return JSON.stringify(jsonObj);
parse: function(jsonStr) {
var jsonObj = JSON.parse(jsonStr);
// extract ciphertext from json object, and create cipher params object
var cipherParams = CryptoJS.lib.CipherParams.create({
ciphertext: CryptoJS.enc.Base64.parse(jsonObj.ct)
// optionally extract iv or salt
cipherParams.iv = CryptoJS.enc.Hex.parse(jsonObj.iv);
cipherParams.salt = CryptoJS.enc.Hex.parse(jsonObj.s);
var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase", {
ct: "tZ4MsEnfbcDOwqau68aOrQ==",
iv: "8a8c8fd8fe33743d3638737ea4a00698",
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase", {
decrypted.toString(CryptoJS.enc.Utf8)