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);
}
}
分享到:
相关推荐
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple ...FIPS PUB 46-3(1999)定义了“三重数据加密算法”(TDEA),也使用了术语“Triple DES”和“DES”。该标准中互换的使用“数据加密算法”(DEA)和“DE
TripleDES加密解密算法的实现(JAVA)
Triple Des 加密算法是一种对称加密算法,它使用三个不同的密钥对数据进行三次加密。该算法的优点是安全性高、强度大,但缺点是计算速度慢。Triple Des 加密算法通常用于保护高敏感数据。 RAS数据库加密算法实现 ...
This is a triple des program
FIPS PUB 46-3(1999)定义了“三重数据加密算法”(TDEA),也使用了术语“Triple DES”和“DES”。该标准中互换的使用“数据加密算法”(DEA)和“DES”的概念,其中以此开始DES的定义: 数据加密标准(DES)...
Triple-DES 加密解密算法的java实现
JAVA 实现 RSA、DES 加密是密码学中的一种重要实现,通过 JAVA 语言实现 RSA 非对称加密算法和 DES 对称加密算法。以下是对 JAVA 实现 RSA、DES 加密的详细知识点: 一、基础知识 现代密码技术可以分为两类:对称...
3DES(即Triple DES)是DES向AES过渡的加密算法,它使用3条64位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。
三重DES加密解密算法,可以加密解密各种文件,有界面源码
3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:设Ek()和Dk()...
3DES(即Triple DES)是DES向AES过渡的加密算法,它利用3条64位的密钥对数据举行三次加密。是DES的一个更平安的变形。它以DES为大约模块,穿越组合分组措施设计出分组加密算法。比起当时的DES,3DES更为平安。
对称加密算法使用同一个密钥进行加密和解密,常见的对称加密算法包括DES、Triple DES、Blowfish、Twofish、Skipjack、MARS、Rijndael和Serpent等。对称加密算法的优点是高速、安全、易于实现,但其缺点是密钥管理...
使用三重DES加密算法和替代加密算法对文件进行加密的小程序
常见的对称加密算法有AES、DES、3DES等。 * DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。 * 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,...
IDEA国际数据加密算法,使用 128 位密钥提供非常强的安全性;其它数据算法包括一些常用编码算法及其与明文(ASCII、Unicode 等)转换等,如 Base64、Quoted Printable、EBCDIC 等。常见的加密和编码算法都已经在.NET...
3des加解密算法,可实现des三重加密
然而,DES 算法仍然是一个非常重要的加密算法,因为它是现代加密算法的基础,许多现代加密算法都是基于 DES 算法的。 数据加密标准 DES 及公开密钥密码体制都是非常重要的加密算法,它们在数据加密和网络通信中发挥...
Triple DES encryption / decryption
Triple DES (3-DES) algorithm for safe comunication betwen systems
3DES又称Triple DES,是DES加密算法的一种模式,它使用3条56位的密钥对 3DES 数据进行三次加密。数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法,并于1981年被ANSI组织规范为ANSI X.3.92...