加解密demo(java、php)

news/2024/12/25 14:55:27/文章来源:https://www.cnblogs.com/qq376324789/p/18442756

数据格式

     * @param args* 撞库---入参加密字段signs加密前格式** {*     "mobileMask": "134123412**",*     "city": "武汉",*     "system": "qxh"* }** 撞库---返回加密字段signs加密前格式* {*     "md5List": [*         "01f32b38b7b208a574c512a40d30cff0",*         "01f32b38b7b208a574c512a40d30cff0"*     ]* }

java版

import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.Data;
import lombok.experimental.Accessors;import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Demo {/*** 引入依赖* <dependency>* <groupId>cn.hutool</groupId>* <artifactId>hutool-all</artifactId>* <version>5.6.5<</version>* </dependency>** @param args* 撞库---入参加密字段signs加密前格式** {*     "mobileMask": "134123412**",*     "city": "武汉",*     "system": "qxh"* }** 撞库---返回加密字段signs加密前格式* {*     "md5List": [*         "01f32b38b7b208a574c512a40d30cff0",*         "01f32b38b7b208a574c512a40d30cff0"*     ]* }*/public static void main(String[] args) {//撞库-----------------------------------------------------------------String checkUrl = "撞库url";String timestamp = String.valueOf(System.currentTimeMillis());String key = String.format("%s%s", "MCXBIjANke", timestamp).substring(0, 16);CheckVO checkVO = new CheckVO();checkVO.setMobileMask("134123412**").setCity("武汉").setSystem("qxh");String signs = SecureUtil.aes(key.getBytes(StandardCharsets.UTF_8)).encryptHex(JSONUtil.toJsonStr(checkVO));Map<String, Object> map = new HashMap<>();map.put("timestamp", timestamp);map.put("signs", signs);String resultData = HttpUtil.createPost(checkUrl).contentType("application/json").body(JSONUtil.toJsonPrettyStr(map)).timeout(5000).execute().body();//请求完成---------------解析结果JSONObject jsonObject = JSONUtil.parseObj(resultData);String result = jsonObject.getStr("result");JSONObject data = jsonObject.getJSONObject("data");String signsReturn = data.getStr("signs");//-----------解密String decryptStr = SecureUtil.aes(key.getBytes(StandardCharsets.UTF_8)).decryptStr(signsReturn);JSONObject md5Map = JSONUtil.parseObj(decryptStr);JSONArray md5Array = md5Map.getJSONArray("md5List");List<String> md5List = md5Array.toList(String.class);System.out.println(JSONUtil.toJsonStr(md5List));//撞库-----------------------------------------------------------------
}@Data@Accessors(chain = true)public static class CheckVO {private String mobileMask;private String city;private String system;}
}
View Code

php版

代码在线运行网址 https://www.cainiaojc.com/tool/php/

<?php
$key = 'MCXBIjANke172760'; // 生成一个随机的16字节密钥
$data = '{"md5List":[]}';// 使用 PKCS5Padding
$padding = 16 - (strlen($data) % 16);
$dataPadded = $data . str_repeat(chr($padding), $padding);// 加密
$encrypted = openssl_encrypt($dataPadded, "AES-128-ECB", $key, OPENSSL_RAW_DATA, openssl_random_pseudo_bytes(16));// 加密后的数据通常需要进行 base64 编码以便存储或传输
$encryptedBase64 = base64_encode($encrypted);
$encryptedHex = bin2hex($encrypted);
echo "加密后的数据(Base64): " . $encryptedHex . "\n";// 解密
$decrypted = openssl_decrypt($encrypted, "AES-128-ECB", $key, OPENSSL_RAW_DATA, substr($encrypted, 0, 16));// 移除填充
$pad = ord($decrypted[strlen($decrypted) - 1]);
$decrypted = substr($decrypted, 0, -1 * $pad);echo "解密后的数据: " . $decrypted . "\n";
?>
View Code

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/806539.html

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

相关文章

Newstar Re wk1 wp

Newstar Re wk1 wpNewstar Re wk1 wp练一下markdown语法(有些地方明显是为了使用markdown语法而硬造的)begin 引导新手使用IDA Pro。用IDA Pro打开,根据英语引导可知flag分为三部分,依次寻找: 第一部分:点进&flag_part1,可找到第一部分。使用小端序存储所以要倒着…

《Java 基础篇》一:入门

Java 基础概念、运算符以及程序流程控制语句。Author: ACatSmiling Since: 2024-09-30bit 和 byte 计算机本质是一系列的电路开关。每个开关存在两种状态:开(on)和关(off)。如果电路是开的,它的值是 1,如果电路是关的,它的值是 0。一个 0 或者一个 1 存储为一个比特(b…

《Java 基础篇》二:面向对象

Java 面向对象的三条主线:类及类的成员、关键字和三大特征。Author: ACatSmiling Since: 2024-09-30概述 面向过程(POP)与面向对象(OOP):二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能…

[python] 基于PyOD库实现数据异常检测

PyOD是一个全面且易于使用的Python库,专门用于检测多变量数据中的异常点或离群点。异常点是指那些与大多数数据点显著不同的数据,它们可能表示错误、噪声或潜在的有趣现象。无论是处理小规模项目还是大型数据集,PyOD提供了50多种算法以满足用户的需求。PyOD的特点包括:统一…

Linux 万字入门教程

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。0. 前言文章已经收录到 GitHub 个人博客项目,欢迎 Star: https://github.com/chenyl8848/chenyl8848.github.io或者访问网站,进行在线浏览:…

阿里面试:说说 jvm 锁的膨胀过程?锁内存怎么变化的?

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

闭源与开源嵌入模型比较以及提升语义搜索效果的技术探讨

闭源与开源嵌入模型比较以及提升语义搜索效果的技术探讨上图为执行语义搜索前的聚类演示 ,嵌入技术是自然语言处理的核心组成部分。虽然嵌入技术的应用范围广泛,但在检索应用中的语义搜索仍是其最常见的用途之一。https://avoid.overfit.cn/post/38350e175fa0424b8c988ad9893…

20240903

mount 我们会惊奇的发现,无论网格在哪里,只要有山覆盖了,那么这里的贡献一定是 \(\sqrt{2}\),如下的图可以证明:那么我们就只用开一个线段树,维护的是最小值和最小值的出现次数,如果最小值不为 \(0\),那么这部风就没有贡献,反之贡献就要加上最小值的出现次数 细节 由于我们可以…

南沙C++信奥赛陈老师解一本通题: 1963:【13NOIP普及组】小朋友的数字

​【题目描述】有 nn 个小朋友排成一列。每个小朋友手上都有一个数字,这个数字可正可负。规定每个小朋友的特征值等于排在他前面(包括他本人)的小朋友中连续若干个(最少有一个)小朋友手上的数字之和的最大值。 作为这些小朋友的老师,你需要给每个小朋友一个分数,分数是这…

Python工程数学2程序开胃菜(上)

2 数学程序开胃菜 在上一章中( https://mp.weixin.qq.com/s/kKenXcEXIeLd_u_2kymF8A ),我们介绍了python的IDE;用numpy实现向量计算;用Matplotlib绘图;用sympy实现微积分和求导;用SciPy实现积分;用VPython实现弹跳球动画。在本章中,您将了解 Python 命令式编程风格的线…

河道水位识别系统

河道水位识别系统采用视频智能分析功能,河道水位识别系统利用前端摄像头实时获取前端视频视频后,自动识别水尺位置,并在水尺区域将水尺进行数字分割,河道水位识别系统然后再通过水位线的位置,通过AI图像识别技术将数字与水位线位置结合对别,即可识别出水尺读数。河道水位…

自动识别是否穿着工作服

自动识别是否穿着工作服通过AI视频分析技术,自动识别是否穿着工作服对作业区域现场人员工作服是否穿戴进行7*24小时实时监测。自动识别是否穿着工作服监测到现场有人未穿戴工作服时,不需人为干预立即抓拍告警,并联动音箱提醒现场人员穿戴工作服。自动识别是否穿着工作服代替…