java des加密解密
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加密解密相关推荐
- Java DES 加密解密
1.加密的相关概念 1.明文:被隐蔽的消息称作明文(plaintext) 2.密文:隐蔽后的消息称作密文(ciphertext) 3.加密:将明文变换成密文的过程称作加密(encryption) 4. ...
- java des加密解密_Java实现的DES加密解密工具类实例
本文实例讲述了Java实现的DES加密解密工具类.分享给大家供大家参考,具体如下: 一个工具类,很常用,不做深入研究了,那来可直接用 DesUtil.java package lsy; import ...
- java des加密解密_DES加密和解密的JAVA实现方式
import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import ...
- Java Des加密解密工具类
原文链接: 1.http://www.java2s.com/Code/Java/Security/EncryptingaStringwithDES.htm 2.http://www.avajava.c ...
- java des加密解密_JAVA和c# 之间数据通讯时通过DES进行加密解密
c#开发前端时调用java开发的接口,需要数据加密后通讯.两边都需要同时通过DES(BASE64)进行加解密. 代码如下 c#端: 加密 public static String Encrypt(St ...
- java 实现 DES加密 解密算法
DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...
- DES加密解密算法Java实现
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小.这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半.使用子密钥对其中一半应 ...
- java des加密类_java的DES加密解密辅助类
java的DES加密解密辅助类 package temptest; import java.io.IOException; import java.io.UnsupportedEncodingExce ...
- Android平台和java平台 DES加密解密互通程序及其不能互通的原因
为什么80%的码农都做不了架构师?>>> 网上的demo一搜一大堆,但是,基本上都是一知半解(包括我).为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DE ...
最新文章
- sulime text 3
- iOS 11开发教程(七)编写第一个iOS11代码Hello,World
- 库依赖关系和开源供应链带来的噩梦
- Datawhale 零基础入门数据挖掘-Task4 建模调参
- macbook pro python开发_年轻人第一台 Mac,来自一个开发者的 Macbook Pro 2019 16寸简评...
- arraylist linkedlist vector 三者区别
- 运行100万秒无错误!
- php 5.3连接mssql2005以上版本的数据库
- Linux 下安装杀毒软件 clamav
- WPS简历模板的图标怎么修改_桌面图标怎么修改?自定义软件图标的操作方法
- 立体栅格地图_高精地图之3D栅格地图的应用
- 远程控制软件TeamViewer轻松解决企业运维难题
- WinAPI设置RGB背景色以及前景色
- ddns动态域名注册
- 数理逻辑—24个(16组)重要等值式
- 在家搭建 Minecraft 服务器,和远程小伙伴一起联机
- 升余弦和根升余弦滤波器(SRRC,RRC)的单位脉冲响应
- 关于图像模式识别的几种分类方法概述
- 与领导争论问题的技巧[zt]
- wampserver橙色解决方法汇总
热门文章
- idea报错解决:Cannot start compilation: the output path is not specified for module “XXX“.
- 升级python3后yum出现异常解决办法
- hbase集群重启后异常删除zookeeper中的元数据
- k8s minikube部署hbase
- yum安装docker(阿里镜像源)及docker-compose二进制安装
- python3数据类型:Number(数字)
- Redis配置文件常用配置详解
- Dubbo 注解驱动(Annotation-Driven)
- 复制的maven项目中,子maven找不到父maven问题解决
- 性能测试(02)-HttpSampler