PHP Laravel VUE AES128 加密解密

*注意需要自行测试相同数据加密,前端加密后打印值和后端加密后打印值是否相同,并且前后端env文件配置相同秘钥,如能加密,需要查看解密后的值是否相同,不相同前端查看是否转Utf8
PHP后端代码公共方法

/**
 * 加密
 * @access  public
 * @return string
 */
function encrypt_data($data = '', $app_key = 'APP_AES_KEY', $app_iv = 'APP_AES_IV', $method = "AES-128-CBC", $options = OPENSSL_RAW_DATA) {
    if (empty($data)) {
        return '';
    }
    $app_key = env($app_key);// env配置16位字符串可以写死一样的
    $app_iv = env($app_iv);// env配置16位字符串可以写死一样的
    $encryptString = base64_encode(openssl_encrypt($data, $method, $app_key, $options, $app_iv));
    return $encryptString;
}

/**
 * 解密
 * @access  public
 * @return string
 */
function decrypt_data($data = '', $app_key = 'APP_AES_KEY', $app_iv = 'APP_AES_IV', $method = "AES-128-CBC", $options = OPENSSL_RAW_DATA) {
    if (empty($data)) {
        return '';
    }
    $app_key = env($app_key);// env配置16位字符串可以写死一样的
    $app_iv = env($app_iv);// env配置16位字符串可以写死一样的
    $decryptString = openssl_decrypt(base64_decode($data), $method, $app_key, $options, $app_iv);
    return $decryptString;
}

VUE前端代码公共方法

export function encryptData (word) {
  var app_key = process.env.VUE_APP_AES_KEY// env配置16位字符串可以写死一样的
  var app_iv = process.env.VUE_APP_AES_IV// env配置16位字符串可以写死一样的
  var key = cryptoJs.enc.Utf8.parse(app_key)
  var iv = cryptoJs.enc.Utf8.parse(app_iv)
  var srcs = cryptoJs.enc.Utf8.parse(word)
  var encrypted = cryptoJs.AES.encrypt(srcs, key, {
    iv: iv,
    mode: cryptoJs.mode.CBC,
    padding: cryptoJs.pad.Pkcs7
  })
  return encrypted.toString()
  // return cryptoJs.enc.Base64.stringify(cryptoJs.enc.Utf8.parse(encrypted)).toString()
}

export function decryptData (data) {
  var app_key = process.env.VUE_APP_AES_KEY// env配置16位字符串可以写死一样的
  var app_iv = process.env.VUE_APP_AES_IV// env配置16位字符串可以写死一样的
  var key = cryptoJs.enc.Utf8.parse(app_key)
  var iv = cryptoJs.enc.Utf8.parse(app_iv)
  var decrypt = cryptoJs.AES.decrypt(data, key, {
    iv: iv,
    mode: cryptoJs.mode.CBC,
    padding: cryptoJs.pad.Pkcs7
  })
  return decrypt.toString(cryptoJs.enc.Utf8)
  // return cryptoJs.enc.Utf8.stringify(decrypt).toString()
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

whaxkl

该打赏续费了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值