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)
  • opmodeCipher.ENCRYPT_MODE--加密模式,Cipher.DECRYPT_MODE--解密模式

  • key :密匙,使用传入的盐构造出一个密匙,可以使用SecretKeySpecKeyGeneratorKeyPairGenerator创建密匙,其中SecretKeySpecKeyGenerator支持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加解密的更多相关文章

  1. DES加解密算法Qt实现

      算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为b ...

  2. DES加解密 cbc模式 的简单讲解 && C++用openssl库来实现的注意事项

    DES cbc是基于数据块加密的.数据块的长度为8字节64bit.以数据块为单位循环加密,再拼接.每个数据块加密的秘钥一样,IV向量不同.第一个数据快所需的IV向量,需要我们提供,从第二个数据块开始, ...

  3. JavaScript与C#互通的DES加解密算法

    原文地址:传送门 本文提供了一个能使JavaScript与C#互通的DES加解密算法的实现,在前台页面中用JavaScript版本的DES算法将数据加密之后,传到服务器端,在服务器端可用C#版本的DE ...

  4. JavaScript与C#互通的DES加解密算法的实现(转)

    本文提供了一个能使JavaScript与C#互通的DES加解密算法的实现,在前台页面中用JavaScript版本的DES算法将数据加密之后,传到服务器端,在服务器端可用C#版本的DES解密算法将其解密 ...

  5. Node.js的DES加解密和MD5加密

    最基本的就是经常用的md5加密算法 代码如下 var  MD5=function (data) {        var _encrymd5 = require('crypto').createHas ...

  6. 一个java的DES加解密类转换成C#

    原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...

  7. Java Des加解密方法(c#加密Java解密)

    最近我们用Java把一个用.net编写的老系统重新做了翻版,但是登录还是用.net的登录.这样就会遇到一个比较棘手的问题,我们登录用的cookie信息都是.net用des加密的,但我们不得不用Java ...

  8. PHP 基础篇 - PHP 中 DES 加解密详解

    一.简介 DES 是对称性加密里面常见一种,全称为 Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法.密钥长度是64位(bit),超过位数密钥被忽略.所谓对 ...

  9. Java拓展教程:文件DES加解密

    Java拓展教程:文件加解密 Java中的加密解密技术 加密技术根据一般可以分为对称加密技术和非对称加密技术.对称加密技术属于传统的加密技术,它的加密和解密的密钥是相同的,它的优点是:运算速度快,加密 ...

  10. javascript JS CryptoJS DES加解密CBC模式与C#DES加解密相同互通

    我们只知道不同的语言解密要相互通用,就需要遵循相同的加密方式,然而在具体做技术预研的时候,就发现会遇到很多问题,网上找的资料也是比较片面,所以我踩了坑,并且把解决方案和相关资料源码提供出来,给需要的朋 ...

随机推荐

  1. 记一次U8的插件开发

    在u8上开发一个winform的插件用来实现不同账套之间的单据协同,使用的方法是用存储过程走数据库.因为原账套的数据量会很大,如果直接在插件上用单线程传输,那肯定会造成传输过程,u8卡死的.一种方法是 ...

  2. C# winfrom 局域网版多人成语接龙(二)

    功能基本上是完成了,要两个人完才好玩,目前 倒计时,每组游戏玩家数量这些控制变量,都是写死再代码里的,等以后想改的时候再改,这个项目核心的功能算是实现了,但还可以扩展,比如记录一下用户的游戏数据,答对 ...

  3. Angular等了三年,那个她已经来了

    Angular生态丰富,功能强大,支撑了许多大型项目的开发.而且一直在前方等待着其他框架跟上.但是不得不直面的一个问题就是:"在等待其他框架跟上的这三年",Angular在陆陆续续 ...

  4. wpf – 如何在UIElement.Margin上为绑定设置FallbackValue?

    <Border BorderBrush="#cccccc" BorderThickness="1" Margin="{Binding PushM ...

  5. NOIP模拟89(多校22)

    T1 谜之阶乘 解题思路 二分答案,发现 \(a-b\) 至多为 19,毕竟 \(20!\) 已经大于 \(10^{18}\) 了. 对于每一种可能的差值,每一次二分 \(b+1\) 直接枚举乘积进行 ...

  6. NOIP模拟60

    T1 整除 解题思路 答案就是 n 的每一个质因数的合法的答案数相乘(证明的话就....) 但是复杂度显然不允许(虽然我们可以给指数取模水过去).. 可以用积性筛(线性筛)利用质数筛出 \(x^m\) ...

  7. uniapp SyntaxError: Unexpected token u in JSON at position 0 解决方案

    今天在做页面跳转传值的时候,一直出现下面的报错: 后来查看了下文档,说如果你的JSON数据是在上一个页面传值过来的话, 这时候在接收数据页解析JSON也会报该错误,因为此时并没有相关的JSON数据从上 ...

  8. k8s——daemonset

    daemonset 为每一个匹配的node都部署一个守护进程 # daemonset node:type=logs daemonset 选择节点 - nadeSelector: 只调度到匹配指定的la ...

  9. kubernetes的搭建(一)

    集群的搭建 集群的类型 kubunetes的集群类型大致上分为两类: 一主多从和多主多从. 一主多从: 一台master节点和多台node节点,搭建简单,但是有单机故障的风险,适用于测试环境 多主多从 ...

  10. [经验分享] VPS安装爱快

    前言:本人是作VPN服务端用,配合域名分流,蛮好用.参考1.送一个阿里云腾讯云安装爱快3.X的文档https://bbs.ikuai8.com/thread-97314-1-1.htmlVPS存在的问 ...