前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Groovy 基于Groovy实现DES加解密

Groovy 基于Groovy实现DES加解密

作者头像
授客
发布2023-06-10 15:28:06
3420
发布2023-06-10 15:28:06
举报
文章被收录于专栏:授客的专栏授客的专栏

groovy 3.0.7

DES加密简介

加密分为对称加密和非对称加密。非对称加密,加解密使用不同的密钥,如RSA;对称加密,加解密使用相同的密钥,如DES(Data Encryption Standard,即数据加密标准)。相对而言,非对称加密安全性更高,但是计算过程复杂耗时,一般只应用于关键信息,非关键信息可以考虑使用对称加密。

代码实现

DES加密

代码语言:javascript
复制
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解密

代码语言:javascript
复制
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);

输出:

代码语言:javascript
复制
{
  'account':'shouke',
  'password':'123'
}

相关说明:

代码语言:javascript
复制
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,密码分组链模式)时必须传入该参数,形如以下:

代码语言:javascript
复制
import java.security.SecureRandom;
// ...
cipher.init(Cipher.ENCRYPT_MODE, key, new SecureRandom()); 
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DES加密简介
  • 代码实现
    • DES加密
      • DES解密
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com