des 加密解密工具类
最近在做des的双对称加密解密,特此记录一下。
public String encryptDes(String data,String key) throws Exception {
//使用原始密钥数据创建DESKeySpec对象
DESedeKeySpec dks = new DESedeKeySpec(key.getBytes());
//创建一个密钥工厂
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
//用密钥工厂把DESKeySpec转换成一个SecretKey对象
Key k = keyFactory.generateSecret(dks);
//初始化Cipher引擎类,参数分别为:算法/工作模式/填充模式
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
//初始化向量
IvParameterSpec ips = new IvParameterSpec("12345678".getBytes());
//初始化加密cipher
cipher.init(Cipher.ENCRYPT_MODE, k, ips);
//执行加密并输出并base64转码加密后byte数组
String str = Base64.encodeBase64String(cipher.doFinal(data.getBytes("UTF-8")));
return str;
}
public static String decryptDes(String data, String key) throws Exception{
DESedeKeySpec dks = new DESedeKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
Key k = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
IvParameterSpec ips = new IvParameterSpec("12345678".getBytes());
cipher.init(Cipher.DECRYPT_MODE, k, ips);
byte[] out = cipher.doFinal(Base64.decodeBase64(data));;
return new String(out, "UTF-8");
}
ok,放送完毕。
一些知识:
数据填补类型:
NoPadding :API或算法本身不对数据进行处理。
PKCS5Padding :
加密前:数据字节长度对8取余,余数为m,若m>0,则补足8-m个字节,字节数值为8-m,即差几个字节就补几个字节,
字节数值即为补充的字节数,若为0则补充8个字节的8.
解密后:取最后一个字节,值为m,则从数据尾部删除m个字节,剩余数据即为加密前的原文。比如差三个字节的话填为
11111333,差四个字节就填为 11114444 没有差就填 88888888
向量:
在CBC(不光是DES算法)模式下,iv通过随机数(或伪随机)机制产生是一种比较常见的方法。
iv的作用主要是用于产生密文的第一个block,以使最终生成的密文产生差异(明文相同的情况下),
使密码攻击变得更为困难,除此之外iv并无其它用途。最大的好处是,即使相同的明文,相同的密钥,也能产生不同的密文。 最后祝工作顺利,身体健康,远离疫情,共创辉煌。
des 加密解密工具类的更多相关文章
- Base64加密解密工具类
使用Apache commons codec类Base64进行加密解密 maven依赖 <dependency> <groupId>commons-codec</grou ...
- .Net(c#)加密解密工具类:
/// <summary> /// .Net加密解密帮助类 /// </summary> public class NetCryptoHelper { #region des实 ...
- 加密解密工具类(Java,DES)
一个Java版的DES加密工具类,能够用来进行网络传输数据加密,保存password的时候进行加密. import java.security.Key; import java.security.sp ...
- java 加密解密工具类(实用!!!)
最近发现了一个加密解密的好例子,很方便使用,可以作为平时开发的工具集,记录一下. package com.sh.springboottdemo2.util; import com.sun.org.ap ...
- java加密解密工具类
package com.founder.mrp.util; import java.nio.charset.StandardCharsets; import java.security.Key; im ...
- AES加密解密工具类封装(AESUtil)
package club.codeapes.common.utils; import org.springframework.util.Base64Utils; import javax.crypto ...
- Java-DES算法加密解密工具类
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import ...
- DES加密解密帮助类
public class DESCrypto { /// <summary> /// 初始化des实例秘钥及向量 /// </summary> /// <param na ...
- MD5&&DES加密解密帮助类
public class _MD5_NETCore加密解密 { /// <summary> /// 加密 /// </summary> /// <param name=& ...
随机推荐
- 3dmax2013卸载/安装失败/如何彻底卸载清除干净3dmax2013注册表和文件的方法
3dmax2013提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dmax2013失败提示3dmax2013安装未完成,某些产品无法安装,也有时候想重新安装3 ...
- pytorch中的view函数和max函数
一.view函数 代码: a=torch.randn(,,,) b = a.view(,-) print(b.size()) 输出: torch.Size([, ]) 解释: 其中参数-1表示剩下的值 ...
- Base64基础知识
转载自百度百科:http://baike.baidu.com/link?url=tI0FbG-ALTTNhRsaQHWXqdVWQDCq4bwd5Xsc0m46M8DKZ5jJyVWnr3IvTprh ...
- Eclipse中项目过大引起的 IDE 加载缓慢,JVM 内存不足的情况解决
如果 IDE 加载项目非常缓慢,甚至常常出现卡死的情况,有可能是开发工具设置的 JVM 内存不够引起的.解决办法:找到 Eclipse 的安装目录,修改 Eclipse.ini 配置文件.修改此配置文 ...
- bootstrap 和datapicker 样式不兼容修复
修改 datepicker.js内的 layout 方法 function(el) { var options = $(el).data('datepicker'); var cal = $('#' ...
- sysstat安装升级
背景: sysstat是什么?? Sysstat,一种常用在Linux系统服务器中的软件工具包,可以用来监控服务器的性能.比如可以监控CPU.硬盘.网络等数据, sysstat提供了Linux性能监控 ...
- 使用Rancher pipeline搭建基于容器的CICD
CICD概述 CI-持续集成(Continuous Integration):频繁地将代码集成到主干的一种开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错 ...
- java实现树的一般操作
https://www.cnblogs.com/dawnyxl/p/9047437.html 树是数据结构中最基本的结构,今天的博客更新一下树的基本操作: 树的节点结构: package tree; ...
- 编程原理—如何用javascript代码解决一些问题
关于编程,我最喜欢的就是解决问题.我不相信有谁天生具有解决问题的能力.这是一种通过反复锻炼而建立并维持的能力.像任何练习一样,有一套指导方针可以帮助你更有效地提高解决问题的能力.我将介绍5个最重要的软 ...
- (六)mybatis-spring集成完整版
mybatis-spring集成完整版 一.项目整体 mybatis接口层.mapper层 Service层 Test调用测试 二.自动生成代码-mybatis generator 主要修改: 接口. ...