DES 工具类

package com.mayikt.main.utils;
import java.security.*;
import javax.crypto.*;/**
* @ClassName: DES
* @Description:DES加解密算法
* @author weny.yang
* @date Mar 25, 2021
*/
public class DES {private static String strDefaultKey = "12345678";    //默认的密钥private Cipher encryptCipher = null;private Cipher decryptCipher = null;/*** 构造函数 DES.使用默认密钥* @throws Exception*/public DES() throws Exception {this(strDefaultKey);}/*** 构造函数 DES.使用指定的密钥* @throws Exception*/public DES(String strKey) throws Exception {Security.addProvider(new com.sun.crypto.provider.SunJCE());Key key = getKey(strKey.getBytes());encryptCipher = Cipher.getInstance("DES");encryptCipher.init(Cipher.ENCRYPT_MODE, key);decryptCipher = Cipher.getInstance("DES");decryptCipher.init(Cipher.DECRYPT_MODE, key);}/*** @Title: encrypt* @Description:加密字符串* @param strIn 需加密的字符串* @return 加密后的字符串* @author weny.yang* @date Mar 25, 2021*/public String encrypt(String strIn) throws Exception {return byteArr2HexStr(encrypt(strIn.getBytes()));}/*** 加密字节数组* @param arrB 需加密的字节数组* @return 加密后的字节数组* @author weny.yang* @date Mar 25, 2021* @throws Exception*/public byte[] encrypt(byte[] arrB) throws Exception {return encryptCipher.doFinal(arrB);}/*** 解密字符串* @param strIn 需解密的字符串* @return 解密后的字符串* @author weny.yang* @date Mar 25, 2021* @throws Exception*/public String decrypt(String strIn) throws Exception {return new String(decrypt(hexStr2ByteArr(strIn)));}/*** 解密字节数组* @param arrB 需解密的字节数组* @return 解密后的字节数组* @author weny.yang* @date Mar 25, 2021* @throws Exception*/public byte[] decrypt(byte[] arrB) throws Exception {return decryptCipher.doFinal(arrB);}/*** 从指定字符串生成密钥,密钥所需的字节数组长度为8位* 不足8位时后面补0,超出8位只取前8位* @param arrBTmp 构成该字符串的字节数组* @return 生成的密钥* @author weny.yang* @date Mar 25, 2021* @throws Exception*/private Key getKey(byte[] arrBTmp) throws Exception {byte[] arrB = new byte[8];for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) {arrB[i] = arrBTmp[i];}Key key = new javax.crypto.spec.SecretKeySpec(arrB, "DES");return key;}/*** 将byte数组转换为表示16进制值的字符串,* 如:byte[]{8,18}转换为:0813,* 和public static byte[] hexStr2ByteArr(String strIn)* 互为可逆的转换过程* @param arrB 需要转换的byte数组* @return 转换后的字符串* @author weny.yang* @date Mar 25, 2021* @throws Exception*/public static String byteArr2HexStr(byte[] arrB) throws Exception {int iLen = arrB.length;StringBuffer sb = new StringBuffer(iLen * 2);for (int i = 0; i < iLen; i++) {int intTmp = arrB[i];while (intTmp < 0) {intTmp = intTmp + 256;}if (intTmp < 16) {sb.append("0");}sb.append(Integer.toString(intTmp, 16));}return sb.toString();}/*** 将表示16进制值的字符串转换为byte数组,* 和public static String byteArr2HexStr(byte[] arrB)* 互为可逆的转换过程* @param strIn 需要转换的字符串* @return 转换后的byte数组* @author weny.yang* @date Mar 25, 2021* @throws Exception*/public static byte[] hexStr2ByteArr(String strIn) throws Exception {byte[] arrB = strIn.getBytes();int iLen = arrB.length;byte[] arrOut = new byte[iLen / 2];for (int i = 0; i < iLen; i = i + 2) {String strTmp = new String(arrB, i, 2);arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16);}return arrOut;}
}
package com.mayikt.main.utils;/**
* @ClassName: EncryUtil
* @Description:加密解密工具类
* @author weny.yang
* @date Mar 25, 2021
*/
public class EncryUtil {/*** @Title: encrypt* @Description:使用默认密钥进行DES加密* @author weny.yang* @date Mar 25, 2021*/public static String encrypt(String plainText) {try {return new DES().encrypt(plainText);} catch (Exception e) {return null;}}/*** @Title: encrypt* @Description:使用指定密钥进行DES解密* @author weny.yang* @date Mar 25, 2021*/public static String encrypt(String plainText, String key) {try {return new DES(key).encrypt(plainText);} catch (Exception e) {return null;}}/*** @Title: decrypt* @Description:使用默认密钥进行DES解密* @author weny.yang* @date Mar 25, 2021*/public static String decrypt(String plainText) {try {return new DES().decrypt(plainText);} catch (Exception e) {return null;}}/*** @Title: decrypt* @Description:使用指定密钥进行DES解密* @author weny.yang* @date Mar 25, 2021*/public static String decrypt(String plainText, String key) {try {return new DES(key).decrypt(plainText);} catch (Exception e) {return null;}}}

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

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

相关文章

2021全球权威AI性能竞赛MLPerf最新榜单: 浪潮获18项冠军几近半壁江山

4月22日&#xff0c;全球权威AI基准评测MLPerf公布2021年最新榜单&#xff0c;在全部有效41个项目中&#xff0c;浪潮获得18项性能第一&#xff0c;斩获几近半数冠军。 MLPerf™由图灵奖得主大卫•帕特森 &#xff08;David Patterson&#xff09;联合谷歌、斯坦福、哈佛大学…

NFS文件锁一致性设计原理解析

简介&#xff1a; 在存储系统中&#xff0c; NFS&#xff08;Network File System&#xff0c;即网络文件系统&#xff09;是一个重要的概念&#xff0c;已成为兼容POSIX语义的分布式文件系统的基础。它允许在多个主机之间共享公共文件系统&#xff0c;并提供数据共享的优势&am…

作为工程师,你真的了解无服务器?

译者 | 王欢来源 | 分布式实验室头图 | 下载于ICphoto最近&#xff0c;我在YouTube上看了一个非常出色的开发人员的视频。它的标题是“无服务器毫无意义”。虽然我非常喜欢该视频&#xff0c;但也不敢确定作者关于无服务器的观点是否完全正确&#xff0c;因此我想在本文中进行讨…

recaf反编译 java jar包

文章目录1. 获取方式2. 软件运行3. 导入jar4. 模式切换5. 字符串混淆解析1. 获取方式 添加QQ群获取197453088 2. 软件运行 java -jar recaf-2.21.13.jar3. 导入jar 4. 模式切换 5. 字符串混淆解析 如何解密Allatori 混淆的字符串 Java ALLATORIxDEMO

分布式锁在存储系统中的技术实践

简介&#xff1a; 阿里云存储提供了完整的分布式锁解决方案&#xff0c;经过了阿里云众多云产品宝贵的业务场景中长期锤炼&#xff0c;稳定高可靠&#xff0c;且提供了多种语言的SDK选择&#xff0c;甚至是RESTful集成方案。 1 背景 针对共享资源的互斥访问历来是很多业务系统…

Spring Cloud 应用在 Kubernetes 上的最佳实践 — 高可用(混沌工程)

简介&#xff1a; 从上篇开始&#xff0c;我们进入到了高可用的章节&#xff0c;上篇提到的熔断能力&#xff0c;是历年保障大促当天晚上整个系统不被洪峰流量打垮的法宝&#xff0c;本篇介绍的措施与熔断有不一样的地方&#xff1f; 前言 从上篇开始&#xff0c;我们进入到了…

闲鱼对Flutter-Native混合工程解耦的探索

简介&#xff1a; 分手快乐&#xff0c;祝你快乐&#xff5e; 作者&#xff1a;祈晴 1. 闲鱼Flutter现状 闲鱼是第一个使用Flutter混合开发的大型应用&#xff0c;但闲鱼客户端开发最深入体会的痛点就是编译时长影响开发体验。在FlutterNative这种开发模式下&#xff0c;Nat…

学 Python 最大的 1 个误区,看看你中招了吗?

提起 Python&#xff0c;大家总觉得很简单。但是&#xff0c;能把 Python 用好的人&#xff0c;好像并没多少。随着 Python 火了之后&#xff0c;像“ 3 天带你学会 Python ”、“快速入门到全栈”这样的教程层出不穷。很多讲了一点基础语法后&#xff0c;还没讲 http 协议和异…

Unable to make public jdk.internal.loader.Resource jdk.internal.loader.URLClassPath.getResource(jav

文章目录1. 现象2. 异常截图2. 解决方案3. 执行命令4. 启动日志5. 浏览器效果图1. 现象 执行命令 xjar.exe java -jar unified-access-center-passwd.jar运行 sprinbgboot 打包的jar包报错 具体信息如下&#xff1a; C:\Users\gblfy\Desktop\xJarDir>xjar.exe java -jar…

win10安装go开发环境

文章目录1. 下载软件2. 安装3. 验证1. 下载软件 golang官网&#xff1a;https://golang.google.cn/dl/ 2. 安装 双击go1.19.1.windows-amd64.msi一路下一步 3. 验证 go version

3 张图带你走近蚂蚁mPaaS音视频通话组件

简介&#xff1a; 远程问诊、线上开户、车载语音通话……蚂蚁 mPaaS 正在“拥抱新技术&#xff0c;探索新未来”。 音视频技术的进步&#xff0c;让线上办公不再是一时权宜之计&#xff0c;也使得线上业务的“无接触”开展成为可能。近日&#xff0c;蚂蚁集团推出的移动开发平台…

立即生效!帕特·基辛格卸任 VMware 所有职务

整理 | 苏宓出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;心无二用&#xff0c;在帕特基辛格&#xff08;Pat Gelsinger&#xff09;成为英特尔新任 CEO 两个月后&#xff0c;他宣布辞去此前的 VMware 首席执行官的职务&#xff0c;全身心地帮助英特尔重建往日的…

云原生应用实现规范 - 初识 Operator

简介&#xff1a; 本文我们将首先了解到 Operator 是什么&#xff0c;之后逐步了解到 Operator 的生态建设&#xff0c;Operator 的关键组件及其基本的工作原理&#xff0c;下面让我们来一探究竟吧。 作者 | 匡大虎、阚俊宝 基于 Kubernetes 平台&#xff0c;我们可以轻松的…

HTTPS POST发送FORM 表单参数 返回 Json

文章目录依赖工具类依赖 <!--httpClient Start--><!--httpClient 文件上传 Start--><!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --><dependency><groupId>commons-fileupload</groupId><artifact…

如何基于 K8s 构建下一代 DevOps 平台?

简介&#xff1a; 当前云原生 DevOps 体系现状如何&#xff1f;面临哪些挑战&#xff1f;如何通过 OAM 解决云原生 DevOps 场景下的诸多问题&#xff1f;云原生开发应用模型 OAM(Open Application Model) 社区核心成员孙健波将为大家一一解答&#xff0c;并分享如何基于 OAM 和…

中国电子云发布专属云CECSTACK 以全栈信创赋能千行百业

2021年4月26日&#xff0c;第四届数字中国建设峰会召开之际&#xff0c;中国电子云在福州举办“云可信 创未来——中国电子云全系产品发布暨战略伙伴签约仪式”&#xff0c;重磅发布中国电子云“信创”实践和全栈自主专属云CECSTACK。中国电子副总经理、党组成员陈锡明&#xf…

idea 双击打不开了咋办

文章目录1. 文件内容还原2. 删除以前旧文件3. 删除以前缓存文件1. 文件内容还原 首先检查一下idea64.exe.vmoptions是否有改动 有的话可以把-javaagent的这一行删除&#xff0c;删除后保存再尝试看看能不能打开。 2. 删除以前旧文件 如果还是不行的话我们可以找打开 C:\Us…

使用日志审计查看MaxCompute执行过哪些操作

简介&#xff1a; MaxCompute完整地记录用户的各项操作行为&#xff0c;会自动将操作日志实时投递到ActionTrail中&#xff0c;ActionTrail针对作业&#xff08;Instance&#xff09;、表&#xff08;Table&#xff09;、函数&#xff08;Function&#xff09;、资源&#xff0…

谈“云”色变?近80%企业曾遭受数据泄露

出品 | 《大咖来了》 一边是企业上云这一毋庸置疑的发展趋势&#xff0c;但另一边&#xff0c;云数据泄露事件的频繁&#xff0c;却让不少企业谈“云”色变。 2020年2月&#xff0c;万豪酒店520万客人信息被泄露&#xff0c;英国信息专员办公室(ICO)对其进行了1840万英镑(约1.…

云网络十年:探路者阿里云的理想和坚持

简介&#xff1a; 转载自CSDN&#xff1a;专访阿里云网络产品线负责人&#xff0c;阿里云智能研究员祝顺民&#xff08;花名江鹤&#xff09;和阿里云资深产品专家吴天议。 近日&#xff0c;阿里巴巴发布强劲财季业绩后&#xff0c;高盛、摩根大通等多家机构上调阿里云估值至千…