使用前需导入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加密/解密的实现[工具类]相关推荐

  1. java des 加密工具的使用,Java中DES加密解密工具类的实现实例

    这篇文章主要介绍了Java实现的DES加密解密工具类,结合具体实例形式分析了Java实现的DES加密解密工具类定义与使用方法,需要的朋友可以参考下 本文实例讲述了Java实现的DES加密解密工具类.分 ...

  2. php与java的des加密解密

    与第三方接口对接des加密.解密,第三方提供java的des加密解密demo,特记录PHP与java加密解密. import javax.crypto.*; import javax.crypto.s ...

  3. java 实现 DES加密 解密算法

    DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...

  4. Java实现DES加密解密

    DES(Data Encryption Standard)是一种对称加密算法,所谓对称加密就是加密和解密都是使用同一个密钥. 加密原理: DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位, ...

  5. Java中3DES加密解密示例

    在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包: jce.jar security/US_export_policy. ...

  6. java ios des加密解密_IOS、java支持DES加密

    转载请注明博客地址:http://blog.csdn.net/mengxiangyue/article/details/40015727 近期在考虑数据加密方面的需求,所以对数据加密简单的看了一下,当 ...

  7. Android平台和java平台 DES加密解密互通程序及其不能互通的原因

    为什么80%的码农都做不了架构师?>>>    网上的demo一搜一大堆,但是,基本上都是一知半解(包括我).为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DE ...

  8. Java 实现DES加密解密

    import java.security.*; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.cryp ...

  9. Java实现DES加密解密(对称式)

    原文:https://blog.csdn.net/gs12software/article/details/83899389 对称式加密:就是加密和解密都是使用同一个密钥,如DES加密 非对称式加密: ...

最新文章

  1. Unicode 转换 ASCII,ASCII 转换 Unicode 在线网站工具
  2. JAVA写接口傻瓜(#)教程(四)
  3. ES6简单总结(搭配简单的讲解和小案例)
  4. Linux内核驱动之GPIO子系统(一)GPIO的使用
  5. 街舞中的rolling机器人_首家!爆点!奈雪の茶、蛙小侠..开业倒计时!街舞PK…这个六一就差你来围观了...
  6. STL6-输入输出流
  7. 花书+吴恩达深度学习(十四)卷积神经网络 CNN 之经典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)
  8. 中科院分区2020_2020年中科院分区升级版出炉,材料化学物理类一区期刊115本!...
  9. 《学会提问》-批判性思维
  10. bmp格式如何转换成png格式
  11. MacOS使用minicom工具配置华为交换机
  12. 阿里云ECS-Centos7.9集群部署Redis服务遭木马攻击
  13. 零线和地线接反了会发生什么?
  14. 大批量其他经纬度转换为百度地图经纬度
  15. GBK 和 UTF8编码
  16. GitHub CEO 说:开源已经胜利,等;开源之道每周评论(2019 11 18)
  17. 全球及中国射频器件市场规模格局与投资战略决策报告2022版
  18. JSP——计算圆形和矩形的面积
  19. 【Python】自动操作Autocad的pyautocad库(一)
  20. 战队口号霸气押韵8字_运动会八字口号押韵有气势 比赛口号简短霸气8字

热门文章

  1. matlab中bp创建多层神经网络,三层 BP 神经网络 matlab 实现
  2. 奉贤区企业技术中心认定给予40万元财政支持
  3. 中国最好大学排名600强完整榜单(软科排名)
  4. 【转载】[Python数据处理] 怎样用Python预处理txt文档提取数据
  5. 好玩的Python猜生肖小程序
  6. 开心的本质 生理 快乐的本质 幸福的本质 和阈值
  7. 向下兼容性格什么意思_男人择偶“向下兼容”,背后的2个真相是什么?
  8. 2017java考证_2017年Java认证考试试题
  9. 北斗计划 | 天枢结营,7 支队伍瓜分巨额奖池
  10. 寻找年度优秀创作者,爱奇艺号『奇镜奖』重磅来袭!