Groovy 基于Groovy实现DES加解密
groovy 3.0.7
DES加密简介
加密分为对称加密和非对称加密。非对称加密,加解密使用不同的密钥,如RSA;对称加密,加解密使用相同的密钥,如DES(Data Encryption Standard,即数据加密标准)。相对而言,非对称加密安全性更高,但是计算过程复杂耗时,一般只应用于关键信息,非关键信息可以考虑使用对称加密。
代码实现
DES加密
import java.util.Base64;
import javax.crypto.Cipher;
import java.security.Key;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
String keyStr = 'h3@FuaKc' // 加解密秘钥
String logInfo = '''{
'account':'shouke',
'password':'123'
}
''';
DESKeySpec dks = new DESKeySpec(keyStr.getBytes('UTF-8'));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance('DES');
Key key = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance('DES');
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encodedBytes = cipher.doFinal(logInfo.getBytes()) // 执行加密操作
// 使用加密后的数据,比如 Base64加密
def encodedString = Base64.getEncoder().encodeToString(encodedBytes);
println(encodedString) // 输出:zdTV3dnCOIkmM7DMz0XC5BIPN0JFK4cR2+wb36Jx5IvfVw3bsXmOfdwtQ88ZvWKj
DES解密
import java.util.Base64;
import javax.crypto.Cipher;
import java.security.Key;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
String keyStr = 'h3@FuaKc';
String b64EncodedString = 'zdTV3dnCOIkmM7DMz0XC5BIPN0JFK4cR2+wb36Jx5IvfVw3bsXmOfdwtQ88ZvWKj'
DESKeySpec dks = new DESKeySpec(keyStr.getBytes('UTF-8'));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance('DES');
Key key = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance('DES');
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] b64DecodedString = Base64.getDecoder().decode(b64EncodedString)
def result = new String(cipher.doFinal(b64DecodedString)); // 解密操作
println(result);
输出:
{
'account':'shouke',
'password':'123'
}
相关说明:
Cipher.init(int opmode, Key key, AlgorithmParameterSpec params)
opmode:Cipher.ENCRYPT_MODE--加密模式,Cipher.DECRYPT_MODE--解密模式key :密匙,使用传入的盐构造出一个密匙,可以使用
SecretKeySpec、KeyGenerator和KeyPairGenerator创建密匙,其中SecretKeySpec和KeyGenerator支持AES,DES,DESede三种加密算法创建密匙,KeyPairGenerator支持RSA加密算法创建密匙params:使用CBC模式(Cipher Block Chaining mode,密码分组链模式)时必须传入该参数,形如以下:import java.security.SecureRandom;
// ...
cipher.init(Cipher.ENCRYPT_MODE, key, new SecureRandom());
Groovy 基于Groovy实现DES加解密的更多相关文章
- DES加解密算法Qt实现
算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为b ...
- DES加解密 cbc模式 的简单讲解 && C++用openssl库来实现的注意事项
DES cbc是基于数据块加密的.数据块的长度为8字节64bit.以数据块为单位循环加密,再拼接.每个数据块加密的秘钥一样,IV向量不同.第一个数据快所需的IV向量,需要我们提供,从第二个数据块开始, ...
- 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 ...
- 一个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 ...
- PHP 基础篇 - PHP 中 DES 加解密详解
一.简介 DES 是对称性加密里面常见一种,全称为 Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法.密钥长度是64位(bit),超过位数密钥被忽略.所谓对 ...
- Java拓展教程:文件DES加解密
Java拓展教程:文件加解密 Java中的加密解密技术 加密技术根据一般可以分为对称加密技术和非对称加密技术.对称加密技术属于传统的加密技术,它的加密和解密的密钥是相同的,它的优点是:运算速度快,加密 ...
- javascript JS CryptoJS DES加解密CBC模式与C#DES加解密相同互通
我们只知道不同的语言解密要相互通用,就需要遵循相同的加密方式,然而在具体做技术预研的时候,就发现会遇到很多问题,网上找的资料也是比较片面,所以我踩了坑,并且把解决方案和相关资料源码提供出来,给需要的朋 ...
随机推荐
- C# Datagridview combox列 初始化颜色
DataGridView 初始化完成后,在combox里显示颜色,如这样: DataGridView 注册 cellPainting事件: private void m_dataGridView_Ce ...
- 安装centos7模板机[正常版]
1. 安装centos 7模板机 准备好centos7的镜像 下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/ 安装centos 自定义硬件: ...
- PCM转AAC返回1768846202 错误解决
1.参考FFMPEG https://github.com/chrisballinger/FFmpeg-iOS-Encoder/blob/master/FFmpegEncoder/AACEncoder ...
- 后端给前端rtmp和flv直播 播放方法
const suffixal = this.videoObj.videoServer .split('?')[0] .split('.') .pop() var router = this.$rout ...
- CF1827
CF1827 A. Counting Orders 简单计数. 两个都排序,双指针维护一下 a[i] 在 b[p] 的位置(a[i] <= b[p]). 那么方案数 \(\times (p - ...
- MFC 好像不太智能
我的想法就是这个MFC可能十靠鼠标和点击啥的偏主力 自己配消息处理函数容易出错,一旦代码坏了,不可逆向寻找失去的代码 多以能用鼠标设计的尽量用用编译器提供的界面去设计 当然啊这个API还是要自己找 这 ...
- JAVA IDEA Maven 加速镜像 阿里云
JAVA IDEA Maven 加速镜像 阿里云 如果是IDEA自带的则在: C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 20 ...
- 通俗理解GAN -- 基础认知
Smiling & Weeping ---- 你已春风摇曳,我仍一身旧雪 1.GAN的基本思想 GAN全称对抗生成网络,顾名思义是生成模型的一种,而他的训练则是一种对抗博弈状态中的.下面我们举 ...
- 大模型重塑软件开发,华为云AI原生应用架构设计与实践分享
在ArchSummit全球架构师峰会2024上,华为云aPaaS平台首席架构师马会彬受邀出席,和技术爱好者分享AI原生应用引擎的架构与实践. AI大模型与AI重塑软件的大趋势下,软件会发生哪些本质的变 ...
- Mysql 聚合函数嵌套使用
Mysql 聚合函数嵌套使用 目的:Mysql 聚合函数嵌套使用 聚合函数不可以直接嵌套使用,比如: max(count(*)) 思路:但是可以嵌套子查询使用(先分组取出count值, 再将count ...