前端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.mzph.cn/news/11378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

今天你做代码检查了吗?

当下,各行各业都在寻找可以降本增效的效率途径,AI人工智能、机器学习等概念也被广泛应用至业务中;而广州云标局推出了一款智能ide代码工具——codigger,不仅项目体检能为开发项目提供快速代码检测,主要检测维度包括bug…

【Spring框架】Spring读取与存储综合练习

练习 在 Spring 项⽬中,通过 main ⽅法获取到 Controller 类,调⽤ Controller ⾥⾯通过注⼊的⽅式调⽤ Service 类,Service 再通过注⼊的⽅式获取到 Repository 类,Repository 类⾥⾯有⼀个⽅法构建⼀个 User 对象,返…

抖音账号矩阵系统开发源码

一、技术自研框架开发背景: 抖音账号矩阵系统是一种基于数据分析和管理的全新平台,能够帮助用户更好地管理、扩展和营销抖音账号。 部分源码分享: ic function indexAction() { //面包屑 $breadcrumbs [ [tit…

虚拟机 RHEL8 安装 MySQL 8.0.34

目录 安装步骤一、清除所有残留的旧MySQL二、安装MySQL 报错问题1. 提示未找到匹配的参数: mysql-community-server2. 公钥问题 安装步骤 一、清除所有残留的旧MySQL 1. 关闭MySQL [rootlocalhost /]# service mysqld stop Redirecting to /bin/systemctl stop …

线程池与ThreadLocal同时使用读取到脏数据

问题&#xff1a;当线程池与ThreadLocal共用时&#xff0c;ThreadLocal读取数据出现错乱。 问题验证&#xff1a; public static void main(String[] args) {ExecutorService executorService Executors.newFixedThreadPool(2);final ThreadLocal<String> threadLocal…

【导入外部jar包到maven项目中--亲测可行】

若项目为springweb项目&#xff0c;则先将jar放到WEB-INF/lib 目录下选中对应的jar包&#xff0c;右键选项 add-lirrary &#xff1b;成功加入之后的jar包是一个项目的目录结构&#xff1a; 至此&#xff0c;项目能够正常运行&#xff0c;在代码周也能够进行导包 转折点&…

windows下若依vue项目部署

下载若依项目&#xff0c;前端后端项目本地启动前端打包&#xff0c;后端打包配置nginx.conf 需要注意的是&#xff1a;路径别用中文&#xff0c;要不然报错 #前台访问地址及端口80&#xff0c;在vue.config.js中可查看server {listen 80;server_name localhost; #后台…

一文谈谈Git

"And if forever lasts till now Alright" 为什么要有git&#xff1f; 想象一下&#xff0c;现如今你的老师同时叫你和张三&#xff0c;各自写一份下半年的学习计划交给他。 可是你的老师是一个极其"较真"的人&#xff0c;发现你俩写的学习计划太"水&…

QT:当登录成功时,关闭登录界面,跳转到新的界面中

1> 继续完善登录框&#xff0c;当登录成功时&#xff0c;关闭登录界面&#xff0c;跳转到新的界面中 widget.h #include "widget.h" //#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent)//, ui(new Ui::Widget) {//ui->setu…

使用python部署chineseocr_lite

使用python部署chineseocr_lite 简介安装报错解决python调用结果 简介 项目地址&#xff1a;https://github.com/DayBreak-u/chineseocr_lite chineseocr_lite 是一个开源项目&#xff0c;用来实现中文的文字识别&#xff0c;支持竖排文字识别、繁体识别&#xff0c;总模型只…

机器学习分布式框架ray运行TensorFlow实例

使用Ray来实现TensorFlow的训练是一种并行化和分布式的方法&#xff0c;它可以有效地加速大规模数据集上的深度学习模型的训练过程。Ray是一个高性能、分布式计算框架&#xff0c;可以在集群上进行任务并行化和数据并行化&#xff0c;从而提高训练速度和可扩展性。 以下是实现…

java调用Groovy动态代码

感谢作者&#xff1a;https://www.ab62.cn/article/36028.html 我的使用 场景&#xff1a;参数转换&#xff08;适配上下游&#xff09; public static void main(String[] args) {String scriptText script();GroovyClassLoader classLoader new GroovyClassLoader();Clas…

某制造企业基于 KubeSphere 的云原生实践

背景介绍 随着业务升级改造与软件产品专案的增多&#xff0c;常规的物理机和虚拟机方式逐渐暴露出一些问题&#xff1a; 大量服务部署在虚拟机上&#xff0c;资源预估和硬件浪费较大&#xff1b;大量服务部署在虚拟机上&#xff0c;部署时间和难度较大&#xff0c;自动化程度…

Linux chmod

chmod 首先chmod 用于修改文件权限&#xff0c;使用命令 ll 查看文件列表&#xff0c;或者使用stat文件名 可以查看其相应的权限 显示的形式为例如 rwx r- - r-- &#xff0c;即所有者拥有读写执行的权限 &#xff0c;同组人员和其他人都只拥有读的权限 一般修改权限为三部分…

加利福尼亚大学|3D-LLM:将3D世界于大规模语言模型结合

来自加利福尼亚大学的3D-LLM项目团队提到&#xff1a;大型语言模型 (LLM) 和视觉语言模型 (VLM) 已被证明在多项任务上表现出色&#xff0c;例如常识推理。尽管这些模型非常强大&#xff0c;但它们并不以 3D 物理世界为基础&#xff0c;而 3D 物理世界涉及更丰富的概念&#xf…

SQL关于having用法及与where的区别

having后面只能接聚合函数 因为having的存在本来就是为了解决&#xff1a;where后面不能接聚合函数&#xff0c;这个问题。 与where的异同&#xff1a; 相同之处&#xff1a; 1.作用都是筛选 2.都可以使用比较运算符&#xff1a;in&#xff0c;between and&#xff0c;lik…

Mybatis 新增/批量新增, 拿到返回的自增主键ID

单个新增 &#xff1a; /** * 插入菜单 * param menuInfo * return */ int insertMenuInfo(MenuInfo menuInfo); xml&#xff1a; <insert id"insertMenuInfo" parameterType"com.XXXX..MenuInfo" keyProperty"id&quo…

GoogleLeNet V2 V3 —— Batch Normalization

文章目录 Batch Normalizationinternal covariate shift激活层的作用BN执行的位置数据白化网络中的BN层训练过程 BN的实验效果MNIST与GoogleLeNet V1比较 GoogleLeNet出来之后&#xff0c;Google在这个基础上又演进了几个版本&#xff0c;一般来说是说有4个版本&#xff0c;之前…

《蛤蟆先生去看心理医生》--- 有感

概述 蛤蟆先生是一个原生家境十分优裕的人&#xff0c;在一定程度上他也将上一代的财富和地位给继承了下来。但其原生家庭中父亲对他要求过于严厉&#xff0c;导致他从小养成了一种讨好型人格&#xff0c;到上一代人去世后性格仍然没有得到成长&#xff0c;以至于最近一段时间他…

Redis 数据库的高可用

文章目录 一.Redis 数据库的持久化1.Redis 高可用概念2.Redis 实现高可用的技术2.1 持久化2.2 主从复制2.3 哨兵2.4 Cluster集群 3.Redis 持久化3.1 持久化的功能3.2 Redis 提供持久化的方式3.2.1 RDB 持久化3.2.2 AOF 持久化&#xff08;append only file&#xff09; 3.3 RDB…