public class Des {/*** 对给定的字符串以指定的编码方式和密钥进行加密* @param srcStr 待加密的字符串* @param charset 字符集,如utf8* @param sKey 密钥 */public static String encrypt(String srcStr, Charset charset, String sKey) {byte[] src = srcStr.getBytes(charset);byte[] buf = Des.encrypt(src, sKey);return Des.parseByte2HexStr(buf);}/*** 对给定的密文以指定的编码方式和密钥进行解密* @param hexStr 需要解密的密文* @param charset 字符集* @param sKey 密钥* @return 解密后的原文* @throws Exception*/public static String decrypt(String hexStr, Charset charset, String sKey) throws Exception {byte[] src = Des.parseHexStr2Byte(hexStr);byte[] buf = Des.decrypt(src, sKey);return new String(buf, charset);}public static byte[] encrypt(byte[] data, String sKey) {try {byte[] key = sKey.getBytes();IvParameterSpec iv = new IvParameterSpec(key);DESKeySpec desKey = new DESKeySpec(key);SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey securekey = keyFactory.generateSecret(desKey);Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, securekey, iv);return cipher.doFinal(data);} catch (Throwable e) {e.printStackTrace();}return null;}/*** 解密* @param src* @param sKey* @return* @throws Exception*/public static byte[] decrypt(byte[] src, String sKey) throws Exception {byte[] key = sKey.getBytes();// 初始化向量IvParameterSpec iv = new IvParameterSpec(key);// 创建一个DESKeySpec对象DESKeySpec desKey = new DESKeySpec(key);// 创建一个密匙工厂SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");// 将DESKeySpec对象转换成SecretKey对象SecretKey securekey = keyFactory.generateSecret(desKey);// Cipher对象实际完成解密操作Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");// 用密匙初始化Cipher对象
        cipher.init(Cipher.DECRYPT_MODE, securekey, iv);// 真正开始解密操作return cipher.doFinal(src);}/*** 将二进制转换成16进制** @param buf* @return*/public static String parseByte2HexStr(byte buf[]) {StringBuffer sb = new StringBuffer();for (int i = 0; i < buf.length; i++) {String hex = Integer.toHexString(buf[i] & 0xFF);if (hex.length() == 1) {hex = '0' + hex;}sb.append(hex.toUpperCase());}return sb.toString();}/*** 将16进制转换为二进制** @param hexStr* @return*/public static byte[] parseHexStr2Byte(String hexStr) {if (hexStr.length() < 1) return null;byte[] result = new byte[hexStr.length() / 2];for (int i = 0; i < hexStr.length() / 2; i++) {int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);result[i] = (byte) (high * 16 + low);}return result;}
}

使用:

    @RequestMapping("/encode")public String encode(String data){return Des.encrypt(data, Charset.forName("utf8"), "testtest");}@RequestMapping("/decode")public String decode(String data) throws Exception{return Des.decrypt(data, Charset.forName("utf8"), "testtest");}

这里在sprint boot 的controller里使用,这不是重点,重点就是:

Des.encrypt(data, Charset.forName("utf8"), "testtest");

Des.decrypt(data, Charset.forName("utf8"), "testtest");

以上两个方法的调用。

参考自:https://www.cnblogs.com/james0/p/7063941.html

转载于:https://www.cnblogs.com/lihan829/p/9251202.html

java des加密解密相关推荐

  1. Java DES 加密解密

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

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

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

  3. java des加密解密_DES加密和解密的JAVA实现方式

    import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import ...

  4. Java Des加密解密工具类

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

  5. java des加密解密_JAVA和c# 之间数据通讯时通过DES进行加密解密

    c#开发前端时调用java开发的接口,需要数据加密后通讯.两边都需要同时通过DES(BASE64)进行加解密. 代码如下 c#端: 加密 public static String Encrypt(St ...

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

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

  7. DES加密解密算法Java实现

    DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小.这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半.使用子密钥对其中一半应 ...

  8. java des加密类_java的DES加密解密辅助类

    java的DES加密解密辅助类 package temptest; import java.io.IOException; import java.io.UnsupportedEncodingExce ...

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

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

最新文章

  1. sulime text 3
  2. iOS 11开发教程(七)编写第一个iOS11代码Hello,World
  3. 库依赖关系和开源供应链带来的噩梦
  4. Datawhale 零基础入门数据挖掘-Task4 建模调参
  5. macbook pro python开发_年轻人第一台 Mac,来自一个开发者的 Macbook Pro 2019 16寸简评...
  6. arraylist linkedlist vector 三者区别
  7. 运行100万秒无错误!
  8. php 5.3连接mssql2005以上版本的数据库
  9. Linux 下安装杀毒软件 clamav
  10. WPS简历模板的图标怎么修改_桌面图标怎么修改?自定义软件图标的操作方法
  11. 立体栅格地图_高精地图之3D栅格地图的应用
  12. 远程控制软件TeamViewer轻松解决企业运维难题
  13. WinAPI设置RGB背景色以及前景色
  14. ddns动态域名注册
  15. 数理逻辑—24个(16组)重要等值式
  16. 在家搭建 Minecraft 服务器,和远程小伙伴一起联机
  17. 升余弦和根升余弦滤波器(SRRC,RRC)的单位脉冲响应
  18. 关于图像模式识别的几种分类方法概述
  19. 与领导争论问题的技巧[zt]
  20. wampserver橙色解决方法汇总

热门文章

  1. idea报错解决:Cannot start compilation: the output path is not specified for module “XXX“.
  2. 升级python3后yum出现异常解决办法
  3. hbase集群重启后异常删除zookeeper中的元数据
  4. k8s minikube部署hbase
  5. yum安装docker(阿里镜像源)及docker-compose二进制安装
  6. python3数据类型:Number(数字)
  7. Redis配置文件常用配置详解
  8. Dubbo 注解驱动(Annotation-Driven)
  9. 复制的maven项目中,子maven找不到父maven问题解决
  10. 性能测试(02)-HttpSampler