Groovy 基于Groovy实现DES加解密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 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)
  • 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());
目录
相关文章
|
5月前
|
存储 算法 安全
Java中的DES和3DES加密算法详解
Java中的DES和3DES加密算法详解
|
6月前
|
存储 算法 安全
java des加解密啊
【2月更文挑战第8天】
|
Java 数据安全/隐私保护
JAVA AES加密解密工具类
JAVA AES加密解密工具类
1067 0
|
Java 数据安全/隐私保护
Groovy 基于Groovy实现MD5加密
Groovy 基于Groovy实现MD5加密
157 0
|
算法 Java
java的DES和3DES加解密算法
java的DES和3DES加解密算法
|
Java 数据安全/隐私保护
java jdk 非对称加密解密实现
java jdk 非对称加密解密实现
|
Java 数据安全/隐私保护
JAVA DES加密解密代码范例
JAVA DES加密解密代码范例
168 0
|
Java 数据安全/隐私保护
Java DES对称加密工具类
Java DES对称加密工具类
753 0
Java DES对称加密工具类
|
算法 安全 数据安全/隐私保护
Java-AES加解密
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。高级加密标准算法从很多方面解决了令人担忧的问题。实际上,攻击数据加密标准的那些手段对于高级加密标准算法本身并没有效果。如果采用真正的128位加密技术甚至256位加密技术,蛮力攻击要取得成功需要耗费相当长的时间。安全研究人员还没有那么多的时间对这种加密方法进行破解试验。我们可能会随时发现一种全新的攻击手段会攻破这种高级加密标准。至少在理论上存在这种可能性。
435 0