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

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);
	}
}

分享到:
评论

相关推荐

    JAVA 加密算法(很好的算法,经典摘要)

    Java加密算法是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java平台上,有多种内置的加密库,如Java Cryptography Extension (JCE) 和 Java Cryptography Architecture (JCA),它们为开发者...

    Java加密算法(源代码)

    Java加密算法是信息安全领域的重要组成部分,它涉及到数据的保护、隐私的维护以及网络通信的安全。在Java中,我们可以使用多种加密技术来实现数据的加密和解密,包括对称加密、非对称加密以及数字签名等。下面将详细...

    java 加密算法及原理.jar

    Java加密算法及原理是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java中,我们可以使用多种加密算法来实现数据的安全传输和存储。以下将详细介绍几种常见的Java加密算法及其工作原理。 1. **...

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

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

    Java加密组件实现DES、RSA和SHA加密算法

    Java加密组件实现DES、RSA和SHA加密算法是信息安全领域中常用的技术,主要用于数据的保护,确保数据在传输或存储过程中的安全。以下是对这些加密算法的详细解释: 1. **DES(Data Encryption Standard)**:DES是一...

    DES加密算法JAVA实现(带简单界面)

    DES(Data Encryption Standard)是一种广泛使用的对称加密算法,它基于块加密,每个块大小为64位。DES算法在1970年代由IBM开发,并在1977年被美国国家标准局(NIST)采纳为标准。该算法的核心是Feistel网络,它通过...

    des加密算法事例 des加密算法事例

    在学习和实践中,你可以使用各种编程语言实现DES加密算法,例如Java、Python、C++等。这些实现通常包括密钥的生成、数据的加解密以及密钥的管理等功能。在实际应用中,由于DES的安全性问题,通常会采用3DES(Triple ...

    java 加密算法的代码实现

    Java加密算法是信息安全领域的重要组成部分,它用于保护数据的隐私和完整性。在Java中,有多种加密技术可供选择,如消息摘要、对称加密、非对称加密以及数字签名。以下将详细介绍这些加密方法。 首先,消息摘要算法...

    java加密算法源码

    Java加密算法源码是Java开发者在处理数据安全时经常需要用到的资源。这些源码涵盖了多种加密算法,包括对称加密、非对称加密、哈希加密以及消息认证码等,它们在网络安全、数据保密和身份验证等领域发挥着关键作用。...

    JAVA_DES3加密算法.doc

    Java中的DES3加密算法,也称为3DES(Triple Data Encryption Algorithm),是一种加强版的DES(Data Encryption Standard)加密算法。3DES通过三次应用DES算法来提高安全性,它使用了两个或三个独立的密钥,使得破解...

    用delphi写的一个des的加密解密小程序,java写的des的一个类

    DES是一种广泛使用的对称加密算法,它在信息安全领域扮演着重要的角色。 DES是一种块密码,其工作原理是将明文数据分为64位的数据块,然后通过一系列复杂的数学运算(包括置换、异或等)进行加密和解密。原始的DES...

    JAVA中3des加密算法

    Java中的3DES(Triple Data Encryption Algorithm)是一种强化版的DES(Data Encryption Standard)加密算法,它通过三次应用DES算法来提高安全性。3DES是DES的一个变种,它使用了两个不同的密钥对数据进行三次加密...

    Triple-DES java实现

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

    JAVA实现RSA、DES加密

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

    java 加密(3DES和交换)

    在这个项目中,我们关注的是两种常见的对称加密算法:3DES(Triple DES)和AES(Advanced Encryption Standard,通常译为高级加密标准)。这是一份适用于Eclipse开发环境的代码资源,可以帮助开发者学习和实践这两种...

    3DES加密java实现

    3DES(Triple Data Encryption Algorithm)是一种广泛应用的对称加密算法,基于DES(Data Encryption Standard)并对其进行了加强。本篇文章将详细探讨Java环境下如何实现3DES加密算法,并介绍相关知识点。 首先,...

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

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

    三次des标准加密算法

    DES(Data Encryption Standard)是一种经典的对称加密算法,由IBM公司于1970年代初期设计,并在1977年被美国国家标准局(NIST)采纳为标准。DES算法的核心是一个64位的明文块,通过一系列复杂的数学运算(如置换、...

    JAVA中3des加密算法.pdf

    在Java编程语言中,3DES(Triple DES,也称为3重DES)是一种广泛使用的对称加密算法,它基于DES(Data Encryption Standard)算法,通过三次迭代增强了安全性。3DES是DES的一个扩展,它将单一的DES加密过程重复三次...

    RSA加密和3DES加解密

    RSA加密和3DES加解密是两种常见的对称与非对称加密算法,在信息安全领域有着广泛应用。在JAVA环境中,这两种加密技术提供了数据保护的重要手段,确保了敏感信息在网络传输过程中的安全。 首先,RSA(Rivest-Shamir-...

Global site tag (gtag.js) - Google Analytics