49 lines
1.5 KiB
JavaScript
Vendored
49 lines
1.5 KiB
JavaScript
Vendored
/**
|
|
* AES JSON formatter for CryptoJS
|
|
* @link https://github.com/brainfoolong/cryptojs-aes-php
|
|
* @version 2.1.1
|
|
*/
|
|
|
|
var 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) {
|
|
var 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) {
|
|
var j = JSON.parse(jsonStr)
|
|
var 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
|
|
}
|
|
} |