java php des加密 byte数组16进制 DESTools

大家好,我是烤鸭:

    今天分享的是javaphp des 加密。

    因为接口对接,难免不同语言,加密又是必不可少的。

    作为接口的提供方,必须把加密规则写好,最好有不同语言的加密demo。


1.    java版本的des加密解密工具类

    DESTools.java

package com.xxxx.xxx.util;import java.security.Key;import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import org.apache.commons.codec.binary.Base64;public class DESTools {public static  DESTools instance;public static DESTools   getInstace(){if(instance == null){instance = new DESTools();}return instance;}Key key;/*** 密钥*/private static byte[] BOSS_SECRET_KEY = { 0x0c, 0x13, (byte) 0xe7,(byte) 0xb2, 0x51, 0x0d, 0x75, (byte) 0xc3, 0x4f, (byte) 0xdd,(byte) 0x4e, (byte) 0x51, 0x24, 0x36, (byte) 0xa6, (byte) 0x28,0x0b, 0x13, (byte) 0xe2, (byte) 0xb8, 0x31, 0x0d, 0x75, (byte) 0xc1 };private String key2 = "0b13e7b2510d75c24edd4b512436a8280b13e2b2310d75c1";public DESTools() {setKey(BOSS_SECRET_KEY);}/*** 根据参数生成KEY*/public void setKey(byte[] strKey) {try {System.out.println(bytesToHexFun3(BOSS_SECRET_KEY));DESKeySpec dks = new DESKeySpec(BOSS_SECRET_KEY);SecretKeyFactory keyFactory;keyFactory = SecretKeyFactory.getInstance("DES");this.key = keyFactory.generateSecret(dks);} catch (Exception e) {throw new RuntimeException("Error initializing DESTOOLS class. Cause: " + e);}}/*** 加密String明文输入,String密文输出*/public String getEncString(String strMing) {byte[] byteMi = null;byte[] byteMing = null;String strMi = "";Base64 base64en = new Base64();try {byteMing = strMing.getBytes("UTF8");byteMi = this.getEncCode(byteMing);strMi = base64en.encodeAsString(byteMi);} catch (Exception e) {throw new RuntimeException("Error initializing DESTOOLS class. Cause: " + e);} finally {base64en = null;byteMing = null;byteMi = null;}return strMi;}/*** 解密 以String密文输入,String明文输出* @param strMi* @return*/public String getDesString(String strMi) {Base64 base64De = new Base64();byte[] byteMing = null;byte[] byteMi = null;String strMing = "";try {byteMi = base64De.decode(strMi);byteMing = this.getDesCode(byteMi);strMing = new String(byteMing, "UTF8");} catch (Exception e) {throw new RuntimeException("Error initializing DESTOOLS class. Cause: " + e);} finally {base64De = null;byteMing = null;byteMi = null;}return strMing;}/*** 加密以byte[]明文输入,byte[]密文输出* @param byteS* @return*/private byte[] getEncCode(byte[] byteS) {byte[] byteFina = null;Cipher cipher;try {cipher = Cipher.getInstance("DES");cipher.init(Cipher.ENCRYPT_MODE, key);byteFina = cipher.doFinal(byteS);} catch (Exception e) {throw new RuntimeException("Error initializing DESTOOLS class. Cause: " + e);} finally {cipher = null;}return byteFina;}/*** 解密以byte[]密文输入,以byte[]明文输出* @param byteD* @return*/private byte[] getDesCode(byte[] byteD) {Cipher cipher;byte[] byteFina = null;try {cipher = Cipher.getInstance("DES");cipher.init(Cipher.DECRYPT_MODE, key);byteFina = cipher.doFinal(byteD);} catch (Exception e) {throw new RuntimeException("Error initializing DESTOOLS class. Cause: " + e);} finally {cipher = null;}return byteFina;}public static void main(String[] args) {DESTools desTools = new DESTools();String string = desTools.getEncString("19760519");System.out.println(string);}/*** 将16进制字符串转换为byte[]* * @param str* @return*/public static byte[] toBytes(String str) {if(str == null || str.trim().equals("")) {return new byte[0];}byte[] bytes = new byte[str.length() / 2];for(int i = 0; i < str.length() / 2; i++) {String subStr = str.substring(i * 2, i * 2 + 2);bytes[i] = (byte) Integer.parseInt(subStr, 16);}return bytes;}/*** 方法三:* byte[] to hex string* * @param bytes* @returnfor(byte b : bytes) { // 使用String的format方法进行转换buf.append(String.format("%02x", new Integer(b & 0xff)));}return buf.toString();}
}

可以看出秘钥是16进制的byte数组,先用上面的 bytesToHexFun3 方法获取字符串

得到的就是秘钥就是    0b13e7b2510d75c24edd4b512436a8280b13e2b2310d75c1

    运行main方法,对123456就行加密得到aKZ47zr+p0I=,再解密




2.    相同的php加密和解密方法

<?php
$str = '0c13e7b2510d75c34fdd4e512436a6280b13e2b8310d75c1';
$string = des_ecb_encrypt('123456',Hex2String($str));
echo '加密结果++',$string;echo '换行++++++++++++++++++++++++++++++++++';;
echo '解密结果++',des_ecb_decrypt($string,Hex2String($str));function Hex2String($hex){$string='';for ($i=0; $i < strlen($hex)-1; $i+=2){$string .= chr(hexdec($hex[$i].$hex[$i+1]));}return $string;
}
function des_ecb_encrypt($data, $key){return openssl_encrypt ($data, 'des-ecb', $key);
}
function des_ecb_decrypt ($data, $key){return openssl_decrypt ($data, 'des-ecb', $key);
}
?>

$str 就是上面java加密解密的key,先转换成16进制byte数组,再进行加密解密。

主要调用的是openssl的des加密方法。

还有别的加密模式,可以参考这篇:    https://www.36nu.com/post/252

如果你没安装wampserver的话,安装可以参考这篇。

        https://blog.csdn.net/Angry_Mills/article/details/80790522

或者你懒得安装,也可以在线调试php代码。

在线调试地址:    https://c.runoob.com/compile/1

调试结果如图:


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

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

相关文章

高可用Eureka注册中心配置说明(双机部署)

目 录 1. 高可用EureKa注册中心示意图 2. Eureka实例相互注册配置 3. 微服务注册到Eureka配置 4. 启动步骤及配置成功检查 5. 说明事项 1. 高可用EureKa注册中心示意图 Spring Cloud的Eureka Server的高可用实际上就是将自己作为服务向其他服注册中心注册自己&#xff0c;形成…

java 实现 常见排序算法(一) 冒泡排序

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下基础排序算法之冒泡排序。 1. 冒泡排序&#xff1a; 原理&#xff1a;比较两个相邻的元素&#xff0c;将较大的元素交换至右端。 思路&#xff1a;依次比较相邻的两个数&#xff0c;将小数放在前面&#xff0c;大…

vue学习之npm

任何一门计算机语言都包含了丰富的第三方库&#xff0c;npm就是JavaScript这门语言的第三方库管理工具&#xff0c;本文详细介绍了JavaScript的包管理工具&#xff0c;npm。 在计算机中安装好Node.js之后&#xff0c;默认已经安装好了npm包管理工具&#xff0c;我们可以输入npm…

Java 深copy 浅copy 引用copy

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下浅copy和深copy。 1. 深copy 什么是深copy&#xff0c;只复制原对象属性值&#xff0c;不管地址。 说一下业务场景&#xff1a; 如果我想创建一个对象&#xff0c;只是对原对象的某个属性值改变。普通的做法就是new 一个…

linux定时任务清理cache缓存

大家好&#xff0c;我是烤鸭&#xff1a; 如果你出现类似cache过多的情况&#xff0c;请参考这篇。 buff/cache 占了1.6G&#xff0c;多数情况下是无所谓的。但是有时候在系统内存不足的时候&#xff0c;可能会影响其他程序的执行。 之前就遇到过 jenkins 因为内存不足 集成失败…

SecureCRT Application 已停止工作

解决方法一&#xff1a; cmd ----> regedit —>HKEY_LOCAL_MACHINE\SOFTWARE\vandyke 删掉vandyke 解决方法二&#xff1a; SecureCRT使用过程中出现异常后自动关闭&#xff0c;导致下次无法正常启动&#xff08;运行程序无反应&#xff09;&#xff0c;此时一种可能的原…

SQLServer之事务简介

事务定义 事务是单个的工作单元。事务是在数据库上按照一定的逻辑顺序执行的任务序列&#xff0c;既可以由用户手动执行&#xff0c;也可以由某种数据库程序自动执行。 事务分类 自动提交事务 每条单独的语句都是一个事务。 在自动提交模式下&#xff0c; 每个数据库操作是在执…

Vmware centos无法连接网络

在vmware下安装了centos7&#xff0c;桥接模式&#xff0c;无法连接网络 解决方案一&#xff1a; 然后重启虚拟机 解决方案二&#xff1a; 然后再试试重启能否联网 解决方案三&#xff1a;

mybatis 一对一 一对多 级联查询

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下关于mybatis的级联查询。 环境&#xff1a; mybatis 3.2.8 spring 4.1.9 1. 业务场景 在一个人申请某些账号或者权限的时候&#xff0c;比如微信的认证流程。 会让你一步一步按要求输入&#xff0c;比如第一步&am…

IDEA启动tomcat报错java.util.zip.ZipException: error in opening zip file

原因CATALINA_BASE参数后面多了一个斜杠 将&#xff1a;CATALINA_BASEK:\Tomcats\apache-tomcat-9.0.10_cform\ 改&#xff1a;CATALINA_BASEK:\Tomcats\apache-tomcat-9.0.10_cform

java 实现 常见排序算法(二) 插入排序

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下基础排序算法之直接插入排序。 1. 直接插入排序&#xff1a; 原理&#xff1a;假设前面的数为有序数列&#xff0c;然后有序数列与无序数列的每个数比较&#xff0c;我们可以从右向左比较 思路&#xff1a;从第2…

linux 常用 启动命令 汇总

大家好&#xff0c;我是烤鸭&#xff1a; 没有准备启动脚本。服务器出问题之后&#xff0c;重启就是全部重启。 如&#xff1a; mysql,nginx,tomcat,zookeeper,rabbitmq,mongodb,redis,xxxxx 头大。持续更新。。。 consul启动&#xff1a; (公网可以访问 使用-client 0.0.0…

java 爬虫 抓取 网易云音乐

大家好&#xff0c;我是烤鸭&#xff1a; 今天和大家交流一下爬虫&#xff0c;抓取网易云音乐。只讨论技术&#xff0c;不提倡其他的。 1. 找音乐源地址 谷歌浏览器 F12 &#xff0c;找请求类型是 Media的。 2. 找请求链接 切换请求类型到 All&#xff0c;看 Respons…

idea警告Cannot resolve MVC View

关闭MVC View路径检查,Settings --> Editor -->Inspections -->搜索Spring MVC View—>取消勾选Spring MVC View Reference

ssh sftp 免密码 公钥登录

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享的是java ssh sftp 免密码登录。 1. JAVA代码 ssh连接 http://www.360doc.com/content/14/0409/16/9552892_367544139.shtml https://blog.csdn.net/u013066244/article/details/70198839 公钥和私钥不需要用代码生成&…

CF989E A Trance of Nightfall(概率+矩阵快速幂优化+倍增)

CF传送门 洛谷传送门 【题目分析】 在zxy大佬的讲解下终于懂了这道题的做法了qwq。。。 首先根据题意&#xff0c;出发点不一定在特殊点上&#xff0c;但第一次操作后&#xff0c;之后所有的操作都是在特殊点上&#xff0c;所以先考虑从线上出发的最大概率&#xff0c;再加一步…

SqlServer自定义聚合函数

sqlserver2017版本包括以上的可以使用string_agg(字段,’,’)函数 sqlserver查询版本&#xff1a; select versionSql Server自定义聚合函数详细bai步骤 开始-> 输出-> 首先用baiVS2008/VS2005建立一个SQL Server项目&#xff0c;右键解决方案添加新项 点击“确定…

springboot : Failed to decode downloaded font 和 OTS parsing error

大家好&#xff0c;我是烤鸭&#xff1a; 采坑实录&#xff0c;看了很多人跟我有类似问题&#xff0c;但是都没解决我的问题&#xff1a; Failed to decode downloaded font 和 OTS parsing error: 尝试了把woff文件移动到其他可以加载的静态资源文件夹下&#xff0c;还是无法…

【objectMapper实体转换异常】 com.fasterxml.jackson.databind.exc.MismatchedInputException

大家好&#xff0c;我是烤鸭&#xff1a; 采坑实录&#xff0c;想把json数据直接转成对象&#xff0c;其中有个属性是list<T>&#xff1a; 异常 1 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.util.ArrayList o…

java 实现 常见排序算法(三)快速排序

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下基础排序算法之快速排序。快速排序是内部排序&#xff08;基于比较排序&#xff09;中最好的比较算法。 1. 快速排序&#xff1a; 原理&#xff1a;在要排的数&#xff08;比如数组A&#xff09;中选择一个中心值k…