在Java中DES加密/解密的实现[工具类]
使用前需导入Crypto包:
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-crypto</artifactId><version>5.2.1.RELEASE</version>
</dependency>
Utils工具类:
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;/*** @author Piconjo* @date 2020/6/1 20:15*/public class DesUtil {private static DesUtil instance;private Key key;private Cipher encryptCipher;private Cipher decryptCipher;// 密钥private static final String SECRET_KEY="iloveumybaby";protected DesUtil() {}protected DesUtil(String strKey) {key = setKey(strKey);try {encryptCipher = Cipher.getInstance("DES");encryptCipher.init(Cipher.ENCRYPT_MODE, key);decryptCipher = Cipher.getInstance("DES");decryptCipher.init(Cipher.DECRYPT_MODE, key);} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (NoSuchPaddingException e) {e.printStackTrace();} catch (InvalidKeyException e) {e.printStackTrace();}}// 初始化实例public static DesUtil getInstance() {if (instance == null) {instance = new DesUtil(SECRET_KEY);}return instance;}// 根据参数生成KEYprivate Key setKey(String strKey) {try {KeyGenerator _generator = KeyGenerator.getInstance("DES");_generator.init(new SecureRandom(strKey.getBytes()));return _generator.generateKey();} catch (Exception e) {e.printStackTrace();}return null;}// 加密 - String明文输入 String密文输出public String setEncString(String strMing) {BASE64Encoder base64en = new BASE64Encoder();try {byte[] byteMing = strMing.getBytes("UTF-8");byte[] byteMi = getEncCode(byteMing);return base64en.encode(byteMi);} catch (Exception e) {e.printStackTrace();}return null;}// 加密 - byte[]明文输入 byte[]密文输出private byte[] getEncCode(byte[] byteS) {byte[] byteFina = null;try {byteFina = encryptCipher.doFinal(byteS);} catch (Exception e) {e.printStackTrace();}return byteFina;}// 解密 - String密文输入 String明文输出public String setDesString(String strMi) {BASE64Decoder base64De = new BASE64Decoder();try {byte[] byteMi = base64De.decodeBuffer(strMi);byte[] byteMing = getDesCode(byteMi);return new String(byteMing, "UTF-8");} catch (Exception e) {e.printStackTrace();}return null;}// 解密 - byte[]密文输入 byte[]明文输出private byte[] getDesCode(byte[] byteD) {byte[] byteFina = null;try {byteFina = decryptCipher.doFinal(byteD);} catch (Exception e) {e.printStackTrace();}return byteFina;}// 单测public static void main(String[] args) {DesUtil desUtil = DesUtil.getInstance();String code= dtDesUtil.setEncString("111111@qq.com");System.out.println(code);System.out.println(dtDesUtil.setDesString(code));}
}
使用须知:
使用前 调用DesUtil的getInstance()
方法 生成DesUtil类的实例
然后再使用返回的DesUtil对象进行密码加密解密操作
不能直接调用DesUtil里的方法进行加密解密 否则会报空指针异常
在Java中DES加密/解密的实现[工具类]相关推荐
- java des 加密工具的使用,Java中DES加密解密工具类的实现实例
这篇文章主要介绍了Java实现的DES加密解密工具类,结合具体实例形式分析了Java实现的DES加密解密工具类定义与使用方法,需要的朋友可以参考下 本文实例讲述了Java实现的DES加密解密工具类.分 ...
- php与java的des加密解密
与第三方接口对接des加密.解密,第三方提供java的des加密解密demo,特记录PHP与java加密解密. import javax.crypto.*; import javax.crypto.s ...
- java 实现 DES加密 解密算法
DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...
- Java实现DES加密解密
DES(Data Encryption Standard)是一种对称加密算法,所谓对称加密就是加密和解密都是使用同一个密钥. 加密原理: DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位, ...
- Java中3DES加密解密示例
在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包: jce.jar security/US_export_policy. ...
- java ios des加密解密_IOS、java支持DES加密
转载请注明博客地址:http://blog.csdn.net/mengxiangyue/article/details/40015727 近期在考虑数据加密方面的需求,所以对数据加密简单的看了一下,当 ...
- Android平台和java平台 DES加密解密互通程序及其不能互通的原因
为什么80%的码农都做不了架构师?>>> 网上的demo一搜一大堆,但是,基本上都是一知半解(包括我).为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DE ...
- Java 实现DES加密解密
import java.security.*; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.cryp ...
- Java实现DES加密解密(对称式)
原文:https://blog.csdn.net/gs12software/article/details/83899389 对称式加密:就是加密和解密都是使用同一个密钥,如DES加密 非对称式加密: ...
最新文章
- Unicode 转换 ASCII,ASCII 转换 Unicode 在线网站工具
- JAVA写接口傻瓜(#)教程(四)
- ES6简单总结(搭配简单的讲解和小案例)
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- 街舞中的rolling机器人_首家!爆点!奈雪の茶、蛙小侠..开业倒计时!街舞PK…这个六一就差你来围观了...
- STL6-输入输出流
- 花书+吴恩达深度学习(十四)卷积神经网络 CNN 之经典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)
- 中科院分区2020_2020年中科院分区升级版出炉,材料化学物理类一区期刊115本!...
- 《学会提问》-批判性思维
- bmp格式如何转换成png格式
- MacOS使用minicom工具配置华为交换机
- 阿里云ECS-Centos7.9集群部署Redis服务遭木马攻击
- 零线和地线接反了会发生什么?
- 大批量其他经纬度转换为百度地图经纬度
- GBK 和 UTF8编码
- GitHub CEO 说:开源已经胜利,等;开源之道每周评论(2019 11 18)
- 全球及中国射频器件市场规模格局与投资战略决策报告2022版
- JSP——计算圆形和矩形的面积
- 【Python】自动操作Autocad的pyautocad库(一)
- 战队口号霸气押韵8字_运动会八字口号押韵有气势 比赛口号简短霸气8字
热门文章
- matlab中bp创建多层神经网络,三层 BP 神经网络 matlab 实现
- 奉贤区企业技术中心认定给予40万元财政支持
- 中国最好大学排名600强完整榜单(软科排名)
- 【转载】[Python数据处理] 怎样用Python预处理txt文档提取数据
- 好玩的Python猜生肖小程序
- 开心的本质 生理 快乐的本质 幸福的本质 和阈值
- 向下兼容性格什么意思_男人择偶“向下兼容”,背后的2个真相是什么?
- 2017java考证_2017年Java认证考试试题
- 北斗计划 | 天枢结营,7 支队伍瓜分巨额奖池
- 寻找年度优秀创作者,爱奇艺号『奇镜奖』重磅来袭!