Rev 1562 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
/**
* AES JSON formatter for CryptoJS
* @link https://github.com/brainfoolong/cryptojs-aes-php
* @version 2.1.1
*/
import CryptoJS from 'crypto-js';
const CryptoJSAesJson = {
/**
* Encrypt any value
* @param {*} value
* @param {string} password
* @return {string}
*/
encrypt: function (value, password) {
return CryptoJS.AES.encrypt(JSON.stringify(value), password, {
format: CryptoJSAesJson
}).toString();
},
/**
* Decrypt a previously encrypted value
* @param {string} jsonStr
* @param {string} password
* @return {*}
*/
decrypt: function (jsonStr, password) {
return JSON.parse(
CryptoJS.AES.decrypt(jsonStr, password, {
format: CryptoJSAesJson
}).toString(CryptoJS.enc.Utf8)
);
},
/**
* Stringify cryptojs data
* @param {Object} cipherParams
* @return {string}
*/
stringify: function (cipherParams) {
const j = { ct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64) };
if (cipherParams.iv) j.iv = cipherParams.iv.toString();
if (cipherParams.salt) j.s = cipherParams.salt.toString();
return JSON.stringify(j).replace(/\s/g, '');
},
/**
* Parse cryptojs data
* @param {string} jsonStr
* @return {*}
*/
parse: function (jsonStr) {
const j = JSON.parse(jsonStr);
const cipherParams = CryptoJS.lib.CipherParams.create({
ciphertext: CryptoJS.enc.Base64.parse(j.ct)
});
if (j.iv) cipherParams.iv = CryptoJS.enc.Hex.parse(j.iv);
if (j.s) cipherParams.salt = CryptoJS.enc.Hex.parse(j.s);
return cipherParams;
}
};
export default CryptoJSAesJson;