PHP实现DESede/ECB/PKCS5Padding加密算法兼容Java SHA1PRNG
这里写自定义目录标题
- 背景
- JAVA代码
- 解决思路
- PHP解密
背景
公司PHP开发对接一个Java项目接口,接口返回数据有用DESede/ECB/PKCS5Padding加密,并且key也使用了SHA1PRNG加密了,网上找了各种办法都不能解密,耗了一两天的时间,一度怀疑人生……
JAVA代码
public class DESUtil {private static final String KEY_ALGORITHM = "DESede";private static final String DEFAULT_CIPHER_ALGORITHM = "DESede/ECB/PKCS5Padding";/* DES加密 */public static String encrypt(String content, final String key) {try {Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);byte[] byteContent = content.getBytes(StandardCharsets.UTF_8.name());cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(key));byte[] result = cipher.doFinal(byteContent);return Base64.encodeBase64String(result);} catch (Exception ex) {log.error("【DES加密失败】:", ex);}return null;}/* DES解密 */public static String decrypt(String content, final String key) {try {Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);cipher.init(Cipher.DECRYPT_MODE, getSecretKey(key));byte[] result = cipher.doFinal(Base64.decodeBase64(content));return new String(result, StandardCharsets.UTF_8.name());} catch (Exception ex) {log.error("【DES解密失败】:", ex);}return null;}public static SecretKeySpec getSecretKey(final String key) {KeyGenerator kg = null;try {kg = KeyGenerator.getInstance(KEY_ALGORITHM);SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");secureRandom.setSeed(key.getBytes(StandardCharsets.UTF_8.name()));kg.init(secureRandom);SecretKey secretKey = kg.generateKey();return new SecretKeySpec(secretKey.getEncoded(), KEY_ALGORITHM);} catch (NoSuchAlgorithmException ex) {log.error("【DES生成秘钥失败】:", ex);} catch (UnsupportedEncodingException e) {log.error("【DES生成秘钥失败】:", e);}return null;}
}
解决思路
终于找到了一个类似问题,可是要会员才能看,作为一名穷DS,哪有这么富有,灵机一动在某鱼花了1大洋看了解决思路,果然是金钱的力量,功夫不负有心人啊,终于寻到stackoverflow有个类似问题。

上面Java代码中的secretKey变量的比特值,使用Base64Utils.encode后得到base64字符串
然后在php中使用base64_decode解码串,得到密钥key
PHP解密
/* 3DES解密 */public function desDecrypt($content) {$key=$this->config['desKey'];$key=base64_decode($key);$content = base64_decode($content);// 解密数据$plaintext = openssl_decrypt($content, 'DES-EDE3', $key, OPENSSL_RAW_DATA);return $plaintext;}
相关文章:
PHP实现DESede/ECB/PKCS5Padding加密算法兼容Java SHA1PRNG
这里写自定义目录标题 背景JAVA代码解决思路PHP解密 背景 公司PHP开发对接一个Java项目接口,接口返回数据有用DESede/ECB/PKCS5Padding加密,并且key也使用了SHA1PRNG加密了,网上找了各种办法都不能解密,耗了一两天的时间…...
亚马逊认证考试系列 - 知识点 - 安全组介绍
第一部分:AWS简介 Amazon Web Services(AWS)是全球领先的云计算服务提供商,为个人、企业和政府机构提供广泛的云服务解决方案。AWS的服务包括计算、存储、数据库、分析、机器学习、人工智能、物联网、安全和企业应用等领域。AW…...
【Golang】exec.command命令日志输出示例
背景 为了输出执行命令的日志,主要是执行时间很长,而且分批输出日志的命令。 代码 func Execute(){command : exec.Command("执行命令")// 隐藏黑色窗口command.SysProcAttr &syscall.SysProcAttr{CreationFlags: 0x08000000}// 输出日…...
Dijkstra算法(求最短路)
简介: 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。 特点: 迪杰斯特拉算法采用的是一种贪心策略&a…...
ipcf 核间通讯
S32G2汽车网关开发(四):IPCF通信_s32g 车载网关 精典-CSDN博客 Linux ARM平台开发系列讲解(IPCF异核通信) 2.11.3 IPCF异核通信驱动编译及其测试-CSDN博客...
第七届西湖论剑·中国杭州网络安全技能大赛 AI 回声海螺 WP
第七届西湖论剑中国杭州网络安全技能大赛-AI-回声海螺 开题,提示输入密码给FLAG。 这个回声海螺应该是个AI,就是复读机,应该是想办法从中骗出密码。 感觉这题不像是AI,也没用啥模型,应该是WEB。或者是说类似于AI的提示…...
SpringBoot 拦截器Intercepto的创建与基本使用
介绍 拦截器和过滤器的功能都差不多,拦截器是SpringBoot的,而且过滤器是Servlet的 SpringBoot过滤器 拦截器-过滤器 执行顺序 发起请求-》过滤器-》拦截器-》接口 创建拦截器 实现HandlerInterceptor 的接口,并且实现他都三个方法 preHan…...
爬虫工作量由小到大的思维转变---<第四十五章 Scrapyd 关于gerapy遇到问题>
前言: 本章主要是解决一些gerapy遇到的问题,会持续更新这篇! 正文: 问题1: 1400 - build.py - gerapy.server.core.build - 78 - build - error occurred (1, [E:\\项目文件名\\venv\\Scripts\\python.exe, setup.py, clean, -a, bdist_uberegg, -d, C:\\Users\\Administrat…...
2024.2.4 awd总结
防御阶段 感觉打了几次awd,前面阶段还算比较熟练 1.ssh连接 靶机登录 修改密码 [root8 ~]# passwd Changing password for user root. New password: Retype new password: 2.xftp连接 备份网站源码 我觉得这步还是非常重要的,万一后面被删站。。…...
仰暮计划|“用心感悟使我获取了艺术真谛,自律如始让我获得了人生成功,我将继续在艺术道路上走下去”
口述人:郭敬东(男) 整理人:马静 口述人与整理人关系:姥爷与外孙女 口述人基本信息:现60岁,1963年出生于湖北省大悟县刘集镇金鼓村,1987年移居到河南省焦作市,现居河南省焦作市高新区。 引言:在得知要讲述自己的经历…...
网络原理——网络层
网络层重要涉及到的协议是IP协议。 IP协议主要完成的工作是: 地址管理路由选择 1. IP协议的组成 版本(Version):占4位,表示IP协议的版本号。目前广泛使用的版本是IPv4和IPv6。 头部长度(Header Length&…...
ideaIU-2023.2.1安装教程
ideaIU-2023.2.1安装教程 一、ideaIU-2023.2.1安装1.1 下载IdeaIU-2023.2.1安装包1.2 安装ideaIU-2023.2.1 二、ideaIU-2023.2.1激活 💖The Begin💖点点关注,收藏不迷路💖 一、ideaIU-2023.2.1安装 1.1 下载IdeaIU-2023.2.1安装包…...
JAVA面试题之三分布式和微服务的区别是什么?
面试题之三 分布式和微服务的区别是什么? 难度指数:3星 考察频率:50% 开发年限:3年左右 二者是隶属于不同的概念。 一.概念 微服务是系统架构的设计方式,是将复杂的业务拆分成多个微型的服务,让这些…...
electron实现软件(热)更新(附带示例源码)
热更新指的是:electron 程序已经开启,在不关闭的情况下执行更新,需要我们把远程的app.asar文件下载到本地执行替换,然而 在electron应用程序开启状态是无法直接下载app.asar文件的,下载会检查出app.asar文件被占用&…...
飞天使-k8s知识点12-kubernetes散装知识点1-架构有状态资源对象分类
文章目录 k8s架构图有状态和无状态服务 资源和对象对象规约和状态 资源的对象-资源的分类元数据型与集群型资源命名空间 k8s架构图 有状态和无状态服务 区分有状态和无状态服务有利于维护yaml文件 因为配置不同资源和对象 命令行yaml来定义对象对象规约和状态 规约 spec 描述…...
mhz_c1f
信息收集 探测到存活主机的IP地址为 192.168.101.32 # nmap -sT --min-rate 10000 -p- 192.168.101.32 -oN port.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-03 13:41 CST Nmap scan report for 192.168.101.32 Host is up (0.0020s latency). Not shown: 6553…...
Excel——高级筛选匹配条件提取数据
一、筛选多条件 Q:筛选多个条件,并将筛选出的内容复制到其他区域 点击任意一个单元格 点击【数据】——【筛选】——【高级筛选】 选择【将筛选结果复制到其他位置】——在【列表区域】 鼠标选择对应的区域位置,条件区域一定要单独写出来&a…...
Python初学者学习记录——python基础综合案例:数据可视化——动态柱状图
一、案例效果 通过pyecharts可以实现数据的动态显示,直观的感受1960~2019年世界各国GDP的变化趋势 二、通过Bar构建基础柱状图 反转x轴和y轴 标签数值在右侧 from pyecharts.charts import Bar from pyecharts.options import LabelOpts# 构建柱状图对象 bar Bar()…...
1.27马尔科夫链,抽样蒙特卡洛模拟(逆转化方法,接受拒绝矩阵),马尔科夫链蒙特卡洛MCMC,隐马尔科夫(HMM(V算法剪枝优化),NLP)
马尔科夫链 蒙特卡洛法模拟 抽样,逆转换方法 就是说由系统自带的随机函数RANDOM,通过下面这个方法,可以变为对应的随机模拟函数 就是说要实现蒙特卡洛模拟,是要先有一个概率表达式,然后基于这个概率表达式࿰…...
MC34063异常发热分析
问题描述: 工程现场反馈若干电源转换模块损坏,没有输出。拿到问题模块后,查看有一个MC34063周围的PCB有比较明显的高温痕迹,配套的电感也有明显的高温过热痕迹。 问题调查: MC34063的电路非常经典(虽然自…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
