package com.stone.security;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.IvParameterSpec;
/**
* 三重加密 3DES也作 Triple DES,
*
* @author stone
* @date 2014-03-10 02:14:37
*/
public class TripleDES {
// 算法名称
public static final String KEY_ALGORITHM = "DESede";
// 算法名称/加密模式/填充方式
public static final String CIPHER_ALGORITHM_ECB = "DESede/ECB/PKCS5Padding";
public static final String CIPHER_ALGORITHM_CBC = "DESede/CBC/PKCS5Padding";
private KeyGenerator keyGen;
private SecretKey secretKey;
private SecretKey secretKey2;
private Cipher cipher;
private static byte[] encryptData;
public static void main(String[] args) throws Exception {
TripleDES tripleDES = new TripleDES("ECB");
tripleDES.encrypt("sau8jzxlcvm,'123`98(*^&%^^JCB ZX>>A<S<}}{");
System.out.println("加密后:" + new String(encryptData));
System.out.println("解密后:"+ new String(tripleDES.decrypt(encryptData)));
tripleDES = new TripleDES("CBC");
tripleDES.encrypt2("sau8jzxlc DQV#><«|vm,'123`98(*^&%^^JCB ZX>>A<S<}}{");
System.out.println("加密后:" + new String(encryptData));
System.out.println("解密后:"+ new String(tripleDES.decrypt2(encryptData)));
}
public TripleDES(String mode) throws Exception {
if ("ECB".equals(mode)) {
// cipher = Cipher.getInstance(KEY_ALGORITHM);
cipher = Cipher.getInstance(CIPHER_ALGORITHM_ECB);
keyGen = KeyGenerator.getInstance(KEY_ALGORITHM);
secretKey = keyGen.generateKey();
} else if("CBC".equals(mode)) {
cipher = Cipher.getInstance(CIPHER_ALGORITHM_CBC);
keyGen = KeyGenerator.getInstance(KEY_ALGORITHM);
DESedeKeySpec spec = new DESedeKeySpec(keyGen.generateKey().getEncoded());
secretKey2 = SecretKeyFactory.getInstance(KEY_ALGORITHM).generateSecret(spec);
}
}
/**
* 加密
* @param str
* @return
* @throws Exception
*/
public byte[] encrypt(String str) throws Exception {
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return encryptData = cipher.doFinal(str.getBytes());
}
/**
* 解密
* @param encrypt
* @return
* @throws Exception
*/
public byte[] decrypt(byte[] encrypt) throws Exception {
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return encryptData = cipher.doFinal(encrypt);
}
byte[] getIV() {
return "administ".getBytes();
}
/**
* 加密
* @param str
* @return
* @throws Exception
*/
public byte[] encrypt2(String str) throws Exception {
cipher.init(Cipher.ENCRYPT_MODE, secretKey2, new IvParameterSpec(getIV()));
return encryptData = cipher.doFinal(str.getBytes());
}
/**
* 解密
* @param encrypt
* @return
* @throws Exception
*/
public byte[] decrypt2(byte[] encrypt) throws Exception {
cipher.init(Cipher.DECRYPT_MODE, secretKey2, new IvParameterSpec(getIV()));
return encryptData = cipher.doFinal(encrypt);
}
}
分享到:
相关推荐
Java加密算法是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java平台上,有多种内置的加密库,如Java Cryptography Extension (JCE) 和 Java Cryptography Architecture (JCA),它们为开发者...
Java加密算法是信息安全领域的重要组成部分,它涉及到数据的保护、隐私的维护以及网络通信的安全。在Java中,我们可以使用多种加密技术来实现数据的加密和解密,包括对称加密、非对称加密以及数字签名等。下面将详细...
Java加密算法及原理是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java中,我们可以使用多种加密算法来实现数据的安全传输和存储。以下将详细介绍几种常见的Java加密算法及其工作原理。 1. **...
TripleDES加密解密算法的实现(JAVA)
Java加密组件实现DES、RSA和SHA加密算法是信息安全领域中常用的技术,主要用于数据的保护,确保数据在传输或存储过程中的安全。以下是对这些加密算法的详细解释: 1. **DES(Data Encryption Standard)**:DES是一...
DES(Data Encryption Standard)是一种广泛使用的对称加密算法,它基于块加密,每个块大小为64位。DES算法在1970年代由IBM开发,并在1977年被美国国家标准局(NIST)采纳为标准。该算法的核心是Feistel网络,它通过...
在学习和实践中,你可以使用各种编程语言实现DES加密算法,例如Java、Python、C++等。这些实现通常包括密钥的生成、数据的加解密以及密钥的管理等功能。在实际应用中,由于DES的安全性问题,通常会采用3DES(Triple ...
Java加密算法是信息安全领域的重要组成部分,它用于保护数据的隐私和完整性。在Java中,有多种加密技术可供选择,如消息摘要、对称加密、非对称加密以及数字签名。以下将详细介绍这些加密方法。 首先,消息摘要算法...
Java加密算法源码是Java开发者在处理数据安全时经常需要用到的资源。这些源码涵盖了多种加密算法,包括对称加密、非对称加密、哈希加密以及消息认证码等,它们在网络安全、数据保密和身份验证等领域发挥着关键作用。...
Java中的DES3加密算法,也称为3DES(Triple Data Encryption Algorithm),是一种加强版的DES(Data Encryption Standard)加密算法。3DES通过三次应用DES算法来提高安全性,它使用了两个或三个独立的密钥,使得破解...
DES是一种广泛使用的对称加密算法,它在信息安全领域扮演着重要的角色。 DES是一种块密码,其工作原理是将明文数据分为64位的数据块,然后通过一系列复杂的数学运算(包括置换、异或等)进行加密和解密。原始的DES...
Java中的3DES(Triple Data Encryption Algorithm)是一种强化版的DES(Data Encryption Standard)加密算法,它通过三次应用DES算法来提高安全性。3DES是DES的一个变种,它使用了两个不同的密钥对数据进行三次加密...
Triple-DES 加密解密算法的java实现
JAVA 实现 RSA、DES 加密是密码学中的一种重要实现,通过 JAVA 语言实现 RSA 非对称加密算法和 DES 对称加密算法。以下是对 JAVA 实现 RSA、DES 加密的详细知识点: 一、基础知识 现代密码技术可以分为两类:对称...
在这个项目中,我们关注的是两种常见的对称加密算法:3DES(Triple DES)和AES(Advanced Encryption Standard,通常译为高级加密标准)。这是一份适用于Eclipse开发环境的代码资源,可以帮助开发者学习和实践这两种...
3DES(Triple Data Encryption Algorithm)是一种广泛应用的对称加密算法,基于DES(Data Encryption Standard)并对其进行了加强。本篇文章将详细探讨Java环境下如何实现3DES加密算法,并介绍相关知识点。 首先,...
三重DES加密解密算法,可以加密解密各种文件,有界面源码
DES(Data Encryption Standard)是一种经典的对称加密算法,由IBM公司于1970年代初期设计,并在1977年被美国国家标准局(NIST)采纳为标准。DES算法的核心是一个64位的明文块,通过一系列复杂的数学运算(如置换、...
在Java编程语言中,3DES(Triple DES,也称为3重DES)是一种广泛使用的对称加密算法,它基于DES(Data Encryption Standard)算法,通过三次迭代增强了安全性。3DES是DES的一个扩展,它将单一的DES加密过程重复三次...
RSA加密和3DES加解密是两种常见的对称与非对称加密算法,在信息安全领域有着广泛应用。在JAVA环境中,这两种加密技术提供了数据保护的重要手段,确保了敏感信息在网络传输过程中的安全。 首先,RSA(Rivest-Shamir-...