DES(Data Encryption Standard)是一种对称加密算法,所谓对称加密就是加密和解密都是使用同一个密钥

引用依赖

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import java.security.SecureRandom;

主要方法

 private static final String PASSWORD_CRYPT_KEY = "abcdef123456ABCDEFRLCF";private final static String ALGORITHM = "DES";/*** 对数据进行DES加密.* @param data 待进行DES加密的数据* @return 返回经过DES加密后的数据* @throws Exception*/public final static String decrypt(String data) throws Exception {return new String(decrypt(hex2byte(data.getBytes()),PASSWORD_CRYPT_KEY.getBytes()));}/*** 对用DES加密过的数据进行解密.* @param data DES加密数据* @return 返回解密后的数据* @throws Exception*/public final static String encrypt(String data) throws Exception  {return byte2hex(encrypt(data.getBytes(), PASSWORD_CRYPT_KEY.getBytes()));}/*** 用指定的key对数据进行DES加密.* @param data 待加密的数据* @param key DES加密的key* @return 返回DES加密后的数据* @throws Exception*/private static byte[] encrypt(byte[] data, byte[] key) throws Exception {SecureRandom sr = new SecureRandom();DESKeySpec dks = new DESKeySpec(key);SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);SecretKey securekey = keyFactory.generateSecret(dks);Cipher cipher = Cipher.getInstance(ALGORITHM);cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);return cipher.doFinal(data);}/*** 用指定的key对数据进行DES解密.* @param data 待解密的数据* @param key DES解密的key* @return 返回DES解密后的数据* @throws Exception*/private static byte[] decrypt(byte[] data, byte[] key) throws Exception {SecureRandom sr = new SecureRandom();DESKeySpec dks = new DESKeySpec(key);SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);SecretKey securekey = keyFactory.generateSecret(dks);Cipher cipher = Cipher.getInstance(ALGORITHM);cipher.init(Cipher.DECRYPT_MODE, securekey, sr);return cipher.doFinal(data);}public static byte[] hex2byte(byte[] b) {if ((b.length % 2) != 0)throw new IllegalArgumentException("长度不是偶数");byte[] b2 = new byte[b.length / 2];for (int n = 0; n < b.length; n += 2) {String item = new String(b, n, 2);b2[n / 2] = (byte) Integer.parseInt(item, 16);}return b2;}public static String byte2hex(byte[] b) {String hs = "";String stmp = "";for (int n = 0; n < b.length; n++) {stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));if (stmp.length() == 1)hs = hs + "0" + stmp;elsehs = hs + stmp;}return hs.toUpperCase();}

测试演示

  public static void main(String[] args) throws Exception {String md5Password = "123423@_asdf";String str = DES.encrypt(md5Password);System.out.println("加密后结果str: " + str);str = DES.decrypt(str);System.out.println("解密后结果str: " + str);}

Java DES 加密解密工具类实现相关推荐

  1. Java Des加密解密工具类

    原文链接: 1.http://www.java2s.com/Code/Java/Security/EncryptingaStringwithDES.htm 2.http://www.avajava.c ...

  2. java des加密解密_Java实现的DES加密解密工具类实例

    本文实例讲述了Java实现的DES加密解密工具类.分享给大家供大家参考,具体如下: 一个工具类,很常用,不做深入研究了,那来可直接用 DesUtil.java package lsy; import ...

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

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

  4. Java AES 加密解密工具类

    maven 引入一个依赖 <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> <depen ...

  5. java字符串加密解密工具类

    /*** 字符串加密解密工具类** @author guyuqiang* @date 2021-06-07*/ public class StringEncryptUtil {/*** 字符串默认键值 ...

  6. java aes 工具类_AESUtil Java AES 加密解密工具类

    package com.singlee.util; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; impo ...

  7. JAVA AES加密解密工具类

    import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.spec. ...

  8. Java MD5 加密 解密 工具类

    package com.accountmanagement.techzero.util;public class MD5Helper {// 标准的构造函数,调用md5Init函数进行初始化工作pub ...

  9. Java DES 加密解密

    1.加密的相关概念 1.明文:被隐蔽的消息称作明文(plaintext) 2.密文:隐蔽后的消息称作密文(ciphertext) 3.加密:将明文变换成密文的过程称作加密(encryption) 4. ...

  10. jwt加密解密工具类

    jwt 加密&解密工具类 引入依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId ...

最新文章

  1. 【怎样写代码】函数式编程 -- Lambda表达式(四):Lambda表达式与Expression树
  2. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义分组的次序)实战
  3. R语言ggplot2包以及lattice包可视化方程、函数的曲线实战:function curve
  4. ElasticSearch、Logstash和Kiabana三个开源工具。
  5. 苹果11是高通基带吗_最强对抗!小米11对抗三星、苹果华为等最高旗舰|喜欢小米吗?...
  6. WPF:动态显示或隐藏Listview的某一列
  7. GTID复制异常的解决步骤
  8. js Function.call
  9. 南开100题c语言计算机二级,3月计算机二级C语言题库南开100题.pdf
  10. 用Python写游戏脚本原来这么简单
  11. 思岚A1激光雷达的测试(windows)
  12. mysql dump hbase_mysqldump 导出部分数据库
  13. 手机拍的视频后期怎么处理?视频大神的后期技巧,Vlog大片也能做
  14. 渐进式量产进阶!卡车自动驾驶进入商业化新周期
  15. 【无标题】2023速卖通开店教程,入驻图文讲解!
  16. 075 定积分积分法之换元积分法
  17. Internal error: : 8 [#1] PREEMPT SMP ARM,vmlinux反汇编命令调试查找错误的步骤
  18. WOW!这是最大的三极管!
  19. [原创]DC-DC输出端加电压会烧毁
  20. 计算机毕业设——论文写作常用的资料搜索库

热门文章

  1. 如何解决windows资源管理器已停止工作?两种方法教会你
  2. mysql字段长度的作用_数据库字段的长度 作用
  3. 【C语言】牛顿切线公式计算 a 的立方根 02
  4. 交互式多模型-无迹卡尔曼滤波IMM-UKF——CV/CT/CA模型交互机动目标跟踪(模型维数不同IMM算法设计)
  5. 于的繁体字有几种写法_于的繁体字是什么(行书怎么写)
  6. 最直白的编译原理-词法分析(清华-王书3版)
  7. 面试中的常见架构设计题
  8. 正则表达式re中的group含义
  9. HackMyvm(九)Gigachad持续更新
  10. 输入一个仅含十二进制数的字符串输出二进制