Java 基于Hutool实现DES加解密
POM.XML配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.shouke</groupId>
<artifactId>des-utils</artifactId>
<version>1.0</version>
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.1.0</version>
</dependency>
</dependencies>
</project>
代码实现
package com.shouke.utils;
import cn.hutool.core.codec.Base64;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.DES;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
/**
* @description:对称加密
*/
public class DesUtil {
private static final String KEY = "jPQQqFT3lwg=";
/**
* 根据KEY生成DES
*/
private static final DES DES = SecureUtil.des(SecureUtil.generateKey(SymmetricAlgorithm.DES.getValue(), KEY.getBytes()).getEncoded());
/**
* 获取加密后信息
*
* @param plainText 明文
* @return 加密后信息
*/
public static String getEncryptData(String plainText) {
return DES.encryptHex(plainText); // 加密为16进制
}
/**
* 获取解密后信息
*
* @param cipherText 密文
* @return 解密后信息
*/
public static String getDecryptData(String cipherText) {
return DES.decryptStr(cipherText);
}
/**
* 生成密钥,并转为字符串,可以储存起来,解密时可直接使用
*
* @return 密钥
*/
public static String getSecretKey() {
byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.DES.getValue()).getEncoded(); // 随机生成秘钥
return Base64.encode(key);
}
public static void main(String[] args) {
System.out.println(getEncryptData("shouke")); // 输出:21e995a30ccbfa38
}
}
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
Java 基于Hutool实现DES加解密的更多相关文章
- 一个java的DES加解密类转换成C#
原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...
- Java Des加解密方法(c#加密Java解密)
最近我们用Java把一个用.net编写的老系统重新做了翻版,但是登录还是用.net的登录.这样就会遇到一个比较棘手的问题,我们登录用的cookie信息都是.net用des加密的,但我们不得不用Java ...
- Java拓展教程:文件DES加解密
Java拓展教程:文件加解密 Java中的加密解密技术 加密技术根据一般可以分为对称加密技术和非对称加密技术.对称加密技术属于传统的加密技术,它的加密和解密的密钥是相同的,它的优点是:运算速度快,加密 ...
- DES加解密 cbc模式 的简单讲解 && C++用openssl库来实现的注意事项
DES cbc是基于数据块加密的.数据块的长度为8字节64bit.以数据块为单位循环加密,再拼接.每个数据块加密的秘钥一样,IV向量不同.第一个数据快所需的IV向量,需要我们提供,从第二个数据块开始, ...
- DES加解密算法Qt实现
算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为b ...
- JavaScript与C#互通的DES加解密算法
原文地址:传送门 本文提供了一个能使JavaScript与C#互通的DES加解密算法的实现,在前台页面中用JavaScript版本的DES算法将数据加密之后,传到服务器端,在服务器端可用C#版本的DE ...
- JavaScript与C#互通的DES加解密算法的实现(转)
本文提供了一个能使JavaScript与C#互通的DES加解密算法的实现,在前台页面中用JavaScript版本的DES算法将数据加密之后,传到服务器端,在服务器端可用C#版本的DES解密算法将其解密 ...
- Node.js的DES加解密和MD5加密
最基本的就是经常用的md5加密算法 代码如下 var MD5=function (data) { var _encrymd5 = require('crypto').createHas ...
- PHP 基础篇 - PHP 中 DES 加解密详解
一.简介 DES 是对称性加密里面常见一种,全称为 Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法.密钥长度是64位(bit),超过位数密钥被忽略.所谓对 ...
- javascript JS CryptoJS DES加解密CBC模式与C#DES加解密相同互通
我们只知道不同的语言解密要相互通用,就需要遵循相同的加密方式,然而在具体做技术预研的时候,就发现会遇到很多问题,网上找的资料也是比较片面,所以我踩了坑,并且把解决方案和相关资料源码提供出来,给需要的朋 ...
随机推荐
- HTML——input之密码框
在 HTML 中,把 <input> 标签的 type 属性设置为 password 可以表示密码框.具体语法格式如下: <input type="password&quo ...
- Python依据遥感影像的分幅筛选出对应的栅格文件
本文介绍基于Python语言,结合已知研究区域中所覆盖的全部遥感影像的分幅条带号,从大量的遥感影像文件中筛选落在这一研究区域中的遥感影像文件的方法. 首先,先来明确一下本文所需实现的需求.现已 ...
- 8.10考试总结(NOIP模拟35)[玩游戏·排列·最短路·矩形]
所谓人,无论是谁到了最后,都会形单影只. T1 玩游戏 解题思路 可以把序列从 k 位置掰成两个序列. 问题就变成了两个序列从开头走向末尾是否可以保证前缀和之和一直不大于 0 . 并且可以移动到两个序 ...
- 【Effective C++】设计与声明——考虑写出一个不抛异常的swap函数
wap是个有趣的函数.原本它只是STL的一部分,而后成为异常安全性编程的脊柱,以及用来实现自我赋值可能性的一个常见机制.所谓swap两对象值,就是将两对象的值交换. 典型实现 缺省情况下的swap动作 ...
- unaipp 发送验证码倒计时
view代码 <view class="margin-top" @tap="getCheckNum()"> <view class=" ...
- 快速生成树协议(RSTP)基本知识及实验(使用eNSP)
关于生成树协议的知识可参考我的另一个博客:https://www.cnblogs.com/mrlayfolk/p/12242627.html 这篇博文主要介绍快速生成树协议(RSTP)的基本知识.-- ...
- EF INNER JOIN WHERE ORDER BY
同时使用 join,where,order by. UpdaterDbContext db = new UpdaterDbContext(); // 按 t_server 表的 seq ASC 排序, ...
- Django路由层、视图层及模板层
Django路由层 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表; 你就是以这种方式告诉Django,对于客户端发来的某个UR ...
- 🌟 简单理解 React 的 createContext 和 Provider 🚀
在 React 应用中,我们经常需要在组件之间共享状态和数据.而 React 的 createContext 和 Provider 就是为了解决这个问题而诞生的. createContext:创建自定 ...
- CAEmitterLayer动画的开始和结束
有个需求,要求模仿微信做表情下雨的动画,一开始想用CAEmitterLayer,实现的代码如下: //期望:显示特效五秒后结束特效 UIImage *image = [UIImage imageNam ...