加解密demo(java、php)

news/2024/10/1 11:17:07

数据格式

     * @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.ryyt.cn/news/66755.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

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或者访问网站,进行在线浏览:…

Leetcode 611. 有效三角形的个数

1.题目基本信息 1.1.题目描述 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 1.2.题目地址 https://leetcode.cn/problems/valid-triangle-number/description/ 2.解题方法 2.1.解题思路 升序排列后,去两条边a和b,取b后面的第三条边c;a+c&…

JavaScript笔记

关于js基本语法、面向对象及操作DOM、BOM元素的简要笔记,末尾延伸了jQuery基操 数据类型原始类型 对象类型 Map and Set流程控制 函数及面向对象函数 方法 常用内部对象 面向对象编程 (OOP)操作BOM元素 操作DOM元素 (I) 操作表单 jQuery基操 js作为一种脚本语言,可以嵌入到HT…

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

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