背景

对方系统java des 加密, 我们用 php 解密

模式基本介绍

ECB模式:电子密本方式,JAVA封装的DES算法的默认模式,就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,则补足8个字节
CBC模式:密文分组链接方式,NET封装的DES算法的默认模式,复杂,加密步骤百度就有

java 代码

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.DES;
import javax.crypto.SecretKey;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm; public class Hello {
public static void main(String[] args) {
String appSecret = "HgQX9h6XD9fVq__eojuMcfuSmnwC3FqIpxz_YOl38rI";
String value = "待加密字符"; SecretKey secretKey = SecureUtil.generateDESKey(SymmetricAlgorithm.DES.getValue(),appSecret.getBytes());
//构建
DES des = SecureUtil.des(secretKey.getEncoded()); //加密
String encryptHexField = des.encryptHex(value);
String base = des.encryptBase64(value);
System.out.println("16进制密文:" + encryptHexField);
System.out.println("base64密文:" + base);
}
}

分析

  • java DES (默认DES/ECB/PKCS5Padding)
  • php des-ecb ,加密算法列表 openssl_get_cipher_methods()

php 代码

    /**
* 16进制转字符串
* @param string $hex
* @return string
*/
public function hexToStr(string $hex)
{
$string = "";
for ($i = 0; $i < strlen($hex) - 1; $i += 2)
$string .= chr(hexdec($hex[$i] . $hex[$i + 1]));
return $string;
} /**
* 解密
* @param string $str
* @param string $key
* @return string
*/
public function desDecrypt(string $str, string $key)
{
$base64 = base64_encode($this->hexToStr($str));
return openssl_decrypt($base64, 'des-ecb', $key);
}

备注:

openssl_decrypt函数  options 参数官文文档有漏: 0(默认),OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING, OPENSSL_NO_PADDING,看源码还有一些值没有列出, 暂时没用到

测试工具 http://tool.chacuo.net/cryptdes

参考文档 https://www.php.net/manual/zh/function.openssl-decrypt.php
参考文档 https://www.javajike.com/book/hutool/chapter8/c376fd86c904a3c20175464e2fb6bbec.html
参考文档 https://www.cnblogs.com/jingxiaoniu/p/12217789.html

php 解密 java des 密文的更多相关文章

  1. 使用C# DES解密java DES加密的字符串

    转自 microAllen   最近需要使用C#的DES解密工具类解密字符串,但是要解密的字符串是使用java进行DES加密的,去网上查了关于C#和java关于DES加密解密的资料,发现可以相互加密解 ...

  2. Java Des加解密方法(c#加密Java解密)

    最近我们用Java把一个用.net编写的老系统重新做了翻版,但是登录还是用.net的登录.这样就会遇到一个比较棘手的问题,我们登录用的cookie信息都是.net用des加密的,但我们不得不用Java ...

  3. 常见的加密和解密算法—DES

    一.DES加密概述 DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并 ...

  4. Rsa加解密Java、C#、php通用代码 密钥转换工具

    之前发了一篇"TripleDes的加解密Java.C#.php通用代码",后面又有项目用到了Rsa加解密,还是在不同系统之间进行交互,Rsa在不同语言的密钥格式不一样,所以过程中主 ...

  5. C# 加密解密(DES,3DES,MD5,Base64) 类

    public sealed class EncryptUtils     {         #region Base64加密解密         /// <summary>        ...

  6. Java DES 测试

    package com.des.test; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyEx ...

  7. 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

    原文:各种加密解密函数(URL加密解密.sha1加密解密.des加密解密) 普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语 ...

  8. 小程序敏感信息解密-java

    /** * AES解密 * @param content 密文 * @return * @throws InvalidAlgorithmParameterException * @throws NoS ...

  9. Java 加解密 AES DES TripleDes

    package xxx.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.crypt ...

  10. C# Java DES加密解密

    转自http://www.cnblogs.com/zhuiyi/archive/2013/04/01/2993201.html 最近被DES加解密弄得超级郁闷,我用C#的方法加密得到的密文老是跟客户给 ...

随机推荐

  1. Twenty-eight

    组件之间的父子关系 使用组件的三个步骤 步骤1:使用import语法导入需要的组件 步骤2:使用conponents节点注册组件 步骤3:以标签形式使用刚才注册的组件   通过components注册 ...

  2. 【文献阅读】Wigley船在波浪中的运动分析

    (1)相关内容 船舶在波浪上运动所受到的外力,主要是流体作用力.这些力的大小和变化与船舶以及流体相对运动有关.一般采用流体动力学方法计算. 船舶在波浪中的运动,根据波浪的形式,分为规则波与不规则波两个 ...

  3. k8s_service

    service 功能 主要是提供负载均衡和服务自动发现. pod的ip会随着升降级.销毁的操作改变.客户端不能直接访问pod的ip. service资源被用于在被访问的pod对象中添加一个有着固定IP ...

  4. xd p3 搭建安全扩展

    常见搭建平台脚本启用 常见平台java Python php jsp搭建要启用脚本 中间件(搭建平台):Apache IIS Tomcat Nginx 主机头值 即 域名 域名IP目录解析安全问题 域 ...

  5. M1处理器的电脑xcode模拟器编译报错问题详解及解决方案

    在M1芯片的苹果电脑中使用Xcode编译模拟器时,可能会碰到如下报错: 原因是由于M1模拟器架构是arm64架构,而Intel芯片是x86_64的架构,从而导致编译出现了问题. 这些报错,都是是由于项 ...

  6. 浅谈tcp 与udp

    tcp是一种面向连接的.可靠的.基于字节流的传输层通信协议.是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的,面向字节流. udp(用户数据报协议)是iso参考模型中一种无连接的传输层 ...

  7. NIO 缓冲区 ByteBuffer 基本认识

    一.差别 java.nio.HeapByteBuffer 0. 获取方式:ByteBuffer.allocate(int value); 1. java堆内存,读写效率较低,但分配内存较块. 2. 受 ...

  8. oracle常用知识随笔

    1.创建表空间及用户赋权 create tablespace spaceone datafile '/dev/spaceone'size 80mextent management localsegme ...

  9. cookie和session、token的区别

    原作者:施杨(施杨's Think out)出处:http://shiyangxt.cnblogs.com ************** 本文版权归原作者和博客园共有,欢迎转载,转载请保留该申明 ** ...

  10. Vmware 虚拟机Ubuntu系统,解决忘记用户名和密码解决办法

    1.在开机界面按住shift,会加载grub的启动界面,找到Advaced options for Ubuntu选项.按"e" 进入编辑模式. 2.光标移动至ro,改为rw,(Li ...