当前位置: 首页 > news >正文

前端CryptoJS-AES加解密 对应php的AES-128-CBC加解密踩坑(java也相同加解密)

 前端部分注意看填充是pkcs7

有个前提,要看前端有没有转成hex格式,如果没转,php那边就不需要调用特定函数转hex格式的

const keyStr = '5hOwdHxpW0GOciqZ';const iv = '0102030405060708';//加密function Encrypt(word) {let key = CryptoJS.enc.Utf8.parse(keyStr);let srcs = CryptoJS.enc.Utf8.parse(word);let encrypted = CryptoJS.AES.encrypt(srcs, key, {iv: CryptoJS.enc.Utf8.parse(iv),mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});let hexStr = encrypted.ciphertext.toString().toUpperCase();return hexStr.toString();//  encrypted.ciphertext.toString(); // 返回hex格式的密文//encrypted.toString(); //此方式返回base64格式密文}//解密function Decrypt(word) {let key = CryptoJS.enc.Utf8.parse(keyStr);let encryptedHexStr = CryptoJS.enc.Hex.parse(word);var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);let decrypt = CryptoJS.AES.decrypt(srcs, key, {iv: CryptoJS.enc.Utf8.parse(iv),mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});return CryptoJS.enc.Utf8.stringify(decrypt).toString();}

后端php代码

if (!function_exists('encrypt')) {//加密function encrypt($data, $method = 'AES-128-CBC', $typeNum = 1){$key  = '5hOwdHxpW0GOciqZ';$iv   = '0102030405060708';$a = openssl_encrypt($data, $method,  $key,  $typeNum, $iv);// $base64 = base64_encode(openssl_encrypt($data, $method,  $key,  $typeNum, $iv));//先转hex格式 再转大写模式return  strtoupper(bin2hex($a)); }
}if (!function_exists('decrypt')) {//解密 这里 $typeNum必须为0function decrypt($data, $method = "AES-128-CBC", $typeNum = 0){$key  = '5hOwdHxpW0GOciqZ';$iv   = '0102030405060708';$data = base64_encode(hex2bin($data));$a = openssl_decrypt($data, $method,  $key, $typeNum,  $iv);return $a;}
}

http://www.lryc.cn/news/98380.html

相关文章:

  • Python解码张三的法外狂徒之旅,揭秘视频背后的真相!【含jS逆向解密】
  • 【解析】对比学习和孪生网络的关系
  • Java版本企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)
  • 智能井盖:科技赋能城市脚下安全
  • wangeditor编辑器配置
  • Sqlite使用WAL模式指南
  • 一套高质量可靠的 React Hooks 库
  • 集合---list接口及实现类
  • JVM简述
  • 7.25训练总结
  • java注解@FeignClient修饰的类路径不在spring boot入口类所在的包下,有哪几种处理方式?
  • 神经网络随记-参数矩阵、剪枝、模型压缩、大小匹配、、
  • 4、Kubernetes 集群 YAML 文件详解
  • leetcode93. 复原 IP 地址(java)
  • 极光Java 版本服务器端实现别名消息推送
  • 【Lua学习笔记】Lua进阶——Table(4)继承,封装,多态
  • 安全性证明(四)Practical Identity-Based Encryption Without Random Oracles
  • Linux中常用的指令
  • 【java】【面对对象高级4】内部类、枚举、泛型
  • Python的用处到底是什么?(三)
  • 【Nodejs】Express基本使用
  • k8s集群安装v1.20.9
  • Staples Drop Ship EDI 需求分析
  • 模型调参及优化
  • 多数据源数据转换和同步的ETL工具推荐
  • 配置 gitlab https 访问
  • Kepware Modbus驱动简介
  • 从零开始学习CTF——CTF是什么
  • 为Android构建现代应用——主体结构
  • 【shell脚本】shell脚本之日志切割(进阶实战三)