Java DES 加密解密工具类实现
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 加密解密工具类实现相关推荐
- Java Des加密解密工具类
原文链接: 1.http://www.java2s.com/Code/Java/Security/EncryptingaStringwithDES.htm 2.http://www.avajava.c ...
- java des加密解密_Java实现的DES加密解密工具类实例
本文实例讲述了Java实现的DES加密解密工具类.分享给大家供大家参考,具体如下: 一个工具类,很常用,不做深入研究了,那来可直接用 DesUtil.java package lsy; import ...
- java des 加密工具的使用,Java中DES加密解密工具类的实现实例
这篇文章主要介绍了Java实现的DES加密解密工具类,结合具体实例形式分析了Java实现的DES加密解密工具类定义与使用方法,需要的朋友可以参考下 本文实例讲述了Java实现的DES加密解密工具类.分 ...
- Java AES 加密解密工具类
maven 引入一个依赖 <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> <depen ...
- java字符串加密解密工具类
/*** 字符串加密解密工具类** @author guyuqiang* @date 2021-06-07*/ public class StringEncryptUtil {/*** 字符串默认键值 ...
- java aes 工具类_AESUtil Java AES 加密解密工具类
package com.singlee.util; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; impo ...
- JAVA AES加密解密工具类
import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.spec. ...
- Java MD5 加密 解密 工具类
package com.accountmanagement.techzero.util;public class MD5Helper {// 标准的构造函数,调用md5Init函数进行初始化工作pub ...
- Java DES 加密解密
1.加密的相关概念 1.明文:被隐蔽的消息称作明文(plaintext) 2.密文:隐蔽后的消息称作密文(ciphertext) 3.加密:将明文变换成密文的过程称作加密(encryption) 4. ...
- jwt加密解密工具类
jwt 加密&解密工具类 引入依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId ...
最新文章
- 【怎样写代码】函数式编程 -- Lambda表达式(四):Lambda表达式与Expression树
- R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义分组的次序)实战
- R语言ggplot2包以及lattice包可视化方程、函数的曲线实战:function curve
- ElasticSearch、Logstash和Kiabana三个开源工具。
- 苹果11是高通基带吗_最强对抗!小米11对抗三星、苹果华为等最高旗舰|喜欢小米吗?...
- WPF:动态显示或隐藏Listview的某一列
- GTID复制异常的解决步骤
- js Function.call
- 南开100题c语言计算机二级,3月计算机二级C语言题库南开100题.pdf
- 用Python写游戏脚本原来这么简单
- 思岚A1激光雷达的测试(windows)
- mysql dump hbase_mysqldump 导出部分数据库
- 手机拍的视频后期怎么处理?视频大神的后期技巧,Vlog大片也能做
- 渐进式量产进阶!卡车自动驾驶进入商业化新周期
- 【无标题】2023速卖通开店教程,入驻图文讲解!
- 075 定积分积分法之换元积分法
- Internal error: : 8 [#1] PREEMPT SMP ARM,vmlinux反汇编命令调试查找错误的步骤
- WOW!这是最大的三极管!
- [原创]DC-DC输出端加电压会烧毁
- 计算机毕业设——论文写作常用的资料搜索库