`
阿尔萨斯
  • 浏览: 4270458 次
社区版块
存档分类
最新评论

Java加密算法Triple DES

 
阅读更多
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源码

    3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple ...FIPS PUB 46-3(1999)定义了“三重数据加密算法”(TDEA),也使用了术语“Triple DES”和“DES”。该标准中互换的使用“数据加密算法”(DEA)和“DE

    TripleDES加密解密算法的实现(JAVA)

    TripleDES加密解密算法的实现(JAVA)

    RAS数据库加密算法

    Triple Des 加密算法是一种对称加密算法,它使用三个不同的密钥对数据进行三次加密。该算法的优点是安全性高、强度大,但缺点是计算速度慢。Triple Des 加密算法通常用于保护高敏感数据。 RAS数据库加密算法实现 ...

    TripleDES.rar_TripleDES_java TripleDES_triple DES_triple DES in

    This is a triple des program

    3DES加密算法源码

    FIPS PUB 46-3(1999)定义了“三重数据加密算法”(TDEA),也使用了术语“Triple DES”和“DES”。该标准中互换的使用“数据加密算法”(DEA)和“DES”的概念,其中以此开始DES的定义: 数据加密标准(DES)...

    Triple-DES java实现

    Triple-DES 加密解密算法的java实现

    JAVA实现RSA、DES加密

    JAVA 实现 RSA、DES 加密是密码学中的一种重要实现,通过 JAVA 语言实现 RSA 非对称加密算法和 DES 对称加密算法。以下是对 JAVA 实现 RSA、DES 加密的详细知识点: 一、基础知识 现代密码技术可以分为两类:对称...

    3DES加密算法 C++实现

    3DES(即Triple DES)是DES向AES过渡的加密算法,它使用3条64位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。

    FileEncrypter.rar_triple DES in java_triple des java_加密 解密

    三重DES加密解密算法,可以加密解密各种文件,有界面源码

    3DES.rar_3des_C++实现3Des算法_dk2_triple_triple DES

    3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:设Ek()和Dk()...

    3des.rar_3des_triple_triple DES_triple DES C_穿越

    3DES(即Triple DES)是DES向AES过渡的加密算法,它利用3条64位的密钥对数据举行三次加密。是DES的一个更平安的变形。它以DES为大约模块,穿越组合分组措施设计出分组加密算法。比起当时的DES,3DES更为平安。

    常见加密算法及身份验证协议探究

    对称加密算法使用同一个密钥进行加密和解密,常见的对称加密算法包括DES、Triple DES、Blowfish、Twofish、Skipjack、MARS、Rijndael和Serpent等。对称加密算法的优点是高速、安全、易于实现,但其缺点是密钥管理...

    FileEncrypter.rar_FileEncrypter.ja_des ja_triple DES_triple DES

    使用三重DES加密算法和替代加密算法对文件进行加密的小程序

    常用的加密算法名称及介绍

    常见的对称加密算法有AES、DES、3DES等。 * DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。 * 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,...

    数据加密算法

    IDEA国际数据加密算法,使用 128 位密钥提供非常强的安全性;其它数据算法包括一些常用编码算法及其与明文(ASCII、Unicode 等)转换等,如 Base64、Quoted Printable、EBCDIC 等。常见的加密和编码算法都已经在.NET...

    3des.rar_3DES算法_3des_des_triple DES_三重DES

    3des加解密算法,可实现des三重加密

    数据加密标准des及公开密钥密码体制

    然而,DES 算法仍然是一个非常重要的加密算法,因为它是现代加密算法的基础,许多现代加密算法都是基于 DES 算法的。 数据加密标准 DES 及公开密钥密码体制都是非常重要的加密算法,它们在数据加密和网络通信中发挥...

    TripleDES.rar_DES CSharp_des_triple_triple DES_triple d

    Triple DES encryption / decryption

    des.rar_triple_triple DES

    Triple DES (3-DES) algorithm for safe comunication betwen systems

    MFC实现3DES程序对文件加解密

    3DES又称Triple DES,是DES加密算法的一种模式,它使用3条56位的密钥对 3DES 数据进行三次加密。数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法,并于1981年被ANSI组织规范为ANSI X.3.92...

Global site tag (gtag.js) - Google Analytics