Java DES对称加密工具类

文章介绍了一个名为DESUtil的Java类,用于实现DES加密算法的几种模式(CBC,OFB,CFB),并展示了加密和解密字符串的方法。同时提及了Docker和Kubernetes在企业中的应用,以及相关的学习资源。
摘要由CSDN通过智能技术生成

public class DESUtil {

/**

  • CFB

*/

public static final String CFB = “CFB”;

/**

  • OFB

*/

public static final String OFB = “OFB”;

/**

  • CBC

*/

public static final String CBC = “CBC”;

/**

  • iv向量

*/

private static final byte[] DESIV = { (byte) 0xCE, (byte) 0x35, (byte) 0x5,

(byte) 0xD, (byte) 0x98, (byte) 0x91, (byte) 0x8, (byte) 0xA };

/**

  • AlgorithmParameterSpec

*/

private static AlgorithmParameterSpec IV = null;

/**

  • SHA1PRNG

*/

private static final String SHA1PRNG = “SHA1PRNG”;

/**

  • DES默认模式

*/

private static final String DES = “DES”;

/**

  • CBC加密模式

*/

private static final String DES_CBC_PKCS5PADDING = “DES/CBC/PKCS5Padding”;

/**

  • OFB加密模式

*/

private static final String DES_OFB_PKCS5PADDING = “DES/OFB/PKCS5Padding”;

/**

  • CFB加密模式

*/

private static final String DES_CFB_PKCS5_PADDING = “DES/CFB/PKCS5Padding”;

/**

  • 加密模式

*/

private static final int ENCRYPT_MODE = 1;

/**

  • 解密模式

*/

private static final int DECRYPT_MODE = 2;

/**

  • 密钥

*/

private Key key;

public DESUtil(String str) {

getKey(str);

}

public Key getKey() {

return key;

}

public void setKey(Key key) {

this.key = key;

}

/**

  • 通过密钥获得key

  • @param secretKey 密钥

  • @author sucb

  • @date 2017年2月28日下午1:17:58

*/

public void getKey(String secretKey) {

try {

SecureRandom secureRandom = SecureRandom.getInstance(SHA1PRNG);

secureRandom.setSeed(secretKey.getBytes());

KeyGenerator generator = null;

try {

generator = KeyGenerator.getInstance(DES);

} catch (NoSuchAlgorithmException e) {

}

generator.init(secureRandom);

IV = new IvParameterSpec(DESIV);

this.key = generator.generateKey();

generator = null;

} catch (Exception e) {

throw new RuntimeException("Error in getKey(String secretKey), Cause: " + e);

}

}

/**

  • 字符串des加密

  • @param data 需要加密的字符串

  • @param encryptType 加密模式 (ECB/CBC/OFB/CFB)

  • @return 加密结果

  • @throws Exception 异常

  • @author sucb

  • @date 2017年3月2日下午7:47:37

*/

public String encrypt(String data, String encryptType) throws Exception {

Cipher cipher = getPattern(encryptType, ENCRYPT_MODE);

byte[] pasByte = cipher.doFinal(data.getBytes(“UTF-8”));

return Base64.encodeBase64String(pasByte);

}

/**

  • 字符串des解密

  • @param data 需要解密的字符串

  • @param decryptType 解密模式 (ECB/CBC/OFB/CFB)

  • @return 解密结果

  • @throws Exception 异常

  • @author sucb

  • @date 2017年3月2日下午7:48:21

*/

public String decrypt(String data, String decryptType) throws Exception {

Cipher cipher = getPattern(decryptType, DECRYPT_MODE);

byte[] pasByte = cipher.doFinal(Base64.decodeBase64(data));

return new String(pasByte, “UTF-8”);

}

/**

  • 初始化cipher

  • @param type 加密/解密模式 (ECB/CBC/OFB/CFB)

  • @param cipherMode cipher工作模式 1:加密; 2:解密

  • @return cipher

  • @throws Exception 异常

  • @author sucb

  • @date 2017年3月2日下午7:49:16

*/

private Cipher getPattern(String type, int cipherMode) throws Exception {

Cipher cipher;

switch (type){

case CBC :

cipher = Cipher.getInstance(DES_CBC_PKCS5PADDING);

cipher.init(cipherMode, key, IV);

break;

case OFB :

cipher = Cipher.getInstance(DES_OFB_PKCS5PADDING);

cipher.init(cipherMode, key, IV);

break;

case CFB :

cipher = Cipher.getInstance(DES_CFB_PKCS5_PADDING);

cipher.init(cipherMode, key, IV);

break;

default :

cipher = Cipher.getInstance(DES);

最后

权威指南-第一本Docker书

引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。

总共包含了:简介、安装Docker、Docker入门、使用Docker镜像和仓库、在测试中使用Docker、使用Docker构建服务、使用Fig编配Docke、使用Docker API、获得帮助和对Docker进行改进等9个章节的知识。

image

image

image

image

关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!

中使用Docker、使用Docker构建服务、使用Fig编配Docke、使用Docker API、获得帮助和对Docker进行改进等9个章节的知识。

[外链图片转存中…(img-g46H8fIU-1714304246245)]

[外链图片转存中…(img-sPhW6s61-1714304246246)]

[外链图片转存中…(img-CsZXteXa-1714304246247)]

[外链图片转存中…(img-GV1r9DFZ-1714304246247)]

关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值