Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 5 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
5 stevensc 1
/**
2
 * AES JSON formatter for CryptoJS
3
 * @link https://github.com/brainfoolong/cryptojs-aes-php
4
 * @version 2.1.1
5
 */
1562 stevensc 6
import CryptoJS from 'crypto-js'
5 stevensc 7
 
1562 stevensc 8
const CryptoJSAesJson = {
5 stevensc 9
  /**
10
   * Encrypt any value
11
   * @param {*} value
12
   * @param {string} password
13
   * @return {string}
14
   */
1562 stevensc 15
  encrypt: function (value, password) {
16
    return CryptoJS.AES.encrypt(JSON.stringify(value), password, {
17
      format: CryptoJSAesJson
18
    }).toString()
5 stevensc 19
  },
20
  /**
21
   * Decrypt a previously encrypted value
22
   * @param {string} jsonStr
23
   * @param {string} password
24
   * @return {*}
25
   */
1562 stevensc 26
  decrypt: function (jsonStr, password) {
27
    return JSON.parse(
28
      CryptoJS.AES.decrypt(jsonStr, password, {
29
        format: CryptoJSAesJson
30
      }).toString(CryptoJS.enc.Utf8)
31
    )
5 stevensc 32
  },
33
  /**
34
   * Stringify cryptojs data
35
   * @param {Object} cipherParams
36
   * @return {string}
37
   */
1562 stevensc 38
  stringify: function (cipherParams) {
39
    const j = { ct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64) }
5 stevensc 40
    if (cipherParams.iv) j.iv = cipherParams.iv.toString()
41
    if (cipherParams.salt) j.s = cipherParams.salt.toString()
42
    return JSON.stringify(j).replace(/\s/g, '')
43
  },
44
  /**
45
   * Parse cryptojs data
46
   * @param {string} jsonStr
47
   * @return {*}
48
   */
1562 stevensc 49
  parse: function (jsonStr) {
50
    const j = JSON.parse(jsonStr)
51
    const cipherParams = CryptoJS.lib.CipherParams.create({
52
      ciphertext: CryptoJS.enc.Base64.parse(j.ct)
53
    })
5 stevensc 54
    if (j.iv) cipherParams.iv = CryptoJS.enc.Hex.parse(j.iv)
55
    if (j.s) cipherParams.salt = CryptoJS.enc.Hex.parse(j.s)
56
    return cipherParams
57
  }
58
}
59
 
60
export default CryptoJSAesJson