aes加密解密算法

React中aes加密解密算法简单使用

​ 本文使用aes加密算法完成解密加密,在加密中使用CBCmode,PKcs7padding,IV_STRINGiv等,在操作中需要第一步先把对应的字符串转化为utf8格式,key值使用默认key值的前16位utf8格式的字符串,然后使用encrypt方法进行加密,完成加密后将加密数据转化成Base64字符串格式,解密方法和加密方法类似只是反向操作。

import CryptoJS from 'crypto-js'

const IV_STRING = CryptoJS.enc.Utf8.parse('ShaosongApping')
export function SYEncryptString(message, key) {
  // 将加密字符串转化为utf8类型
  message = CryptoJS.enc.Utf8.parse(message)
  // key 值进行截取
  key = CryptoJS.enc.Utf8.parse(String(key).substr(0, 16))
  // 使用加密encrypt进行加密
  const cipher = CryptoJS.AES.encrypt(message, key, {
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7,
    iv: IV_STRING,
  })
  // 将加密后的数据转换成 Base64
  const base64Cipher = cipher.ciphertext.toString(CryptoJS.enc.Base64)
  return base64Cipher
}

export function SYDecryptString(encrypted, key) {
  try {
    key = CryptoJS.enc.Utf8.parse(String(key).substr(0, 16))
    // 将加密密文先通过base64解码字符串
    let decData = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Base64.parse(encrypted))
    // 使用加密decrypt进行加密
    const decipher = CryptoJS.AES.decrypt(decData, key, {
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7,
      iv: IV_STRING,
    })

    // 将解密对象转换成 UTF8 的字符串
    const resultDecipher = decipher.toString(CryptoJS.enc.Utf8)
    return resultDecipher
  } catch (err) {
    return encrypted
  }
}

你可能感兴趣的:(JavaScript,react,AES,javascript,安全,reactjs)