`
TRAMP_ZZY
  • 浏览: 139857 次
社区版块
存档分类
最新评论

Java DES 实现

    博客分类:
  • Java
 
阅读更多

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/** 
 * ClassName:DesUtils <br/> 
 * Function: Des 加密解密算法的实现的工具类. <br/> 
 * Reason:   Des 加密解密算法的实现的工具类. <br/> 
 * Date:     2013年10月20日 上午10:39:31 <br/> 
 * @author   zhangzhaoyu 
 * @version   
 * @since    JDK 1.6 
 * @see       
 */
public class DesUtils {

	private final static String DES = "DES";
	
	/**
	 * 
	 * encrypt:<br />
	 * 实现DES 加密
	 *
	 * @author zhangzhaoyu
	 * @param data
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static String encrypt(String data, String key) throws Exception {
		
		byte[] bt = encrypt(data.getBytes(), key.getBytes());
		String strs =  new BASE64Encoder().encode(bt);
		return strs;
	}
	
	/**
	 * 
	 * decrypt:<br />
	 * 实现DES 解密
	 *
	 * @author zhangzhaoyu
	 * @param data
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static String decrypt(String data, String key) throws Exception {
		
		if (data == null) {
			return null;
		}
		
		BASE64Decoder decoder = new BASE64Decoder();
		byte[] buf = decoder.decodeBuffer(data);
		byte[] bt = decrypt(buf, key.getBytes());
		
		return new String(bt);
	}
	
	public static byte[] encrypt(byte[] data, byte[] key) throws Exception {
		
		// 生成一个可信任的随机数源
		//SecureRandom sr = new SecureRandom();
		
		// 从原始密钥数据创建DESKeySpec对象
		DESKeySpec dks = new DESKeySpec(key);
		
		// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
		SecretKeyFactory keyFacotry = SecretKeyFactory.getInstance(DES);
		SecretKey secretKey = keyFacotry.generateSecret(dks);
		
		// Cipher对象实际完成加密操作
		Cipher cipher = Cipher.getInstance(DES);
		// 用密钥初始化Cipher对象
		
		IvParameterSpec iv = new IvParameterSpec(key);
		cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
		
		
		return cipher.doFinal(data);
	}
	
	public static byte[] decrypt(byte[] data, byte[] key) throws Exception {
		
		// 生成一个可信任的随机数源
		//SecureRandom sr = new SecureRandom();
		
		// 从原始密钥数据创建DESKeySpec对象
		DESKeySpec dks = new DESKeySpec(key);
		
		// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
		SecretKey securekey = keyFactory.generateSecret(dks);
		
		// Cipher对象实际完成解密操作
		Cipher cipher = Cipher.getInstance(DES);
		
		IvParameterSpec iv = new IvParameterSpec(key);
		// 用密钥初始化Cipher对象
		cipher.init(Cipher.DECRYPT_MODE, securekey, iv);

		return cipher.doFinal(data);
	}
}
 
分享到:
评论

相关推荐

    基于java实现的des算法

    基于Java实现的DES算法 作为一个IT行业大师,我将从给定的文件中生成相关知识点。 标题:基于Java实现的DES算法 在这个标题中,我们可以看到这个Java程序的主要功能是实现DES(Data Encryption Standard)算法。...

    java des算法 c 实现

    C语言版本的DES实现通常需要定义相应的数据结构来表示这些操作,并实现这些函数。 以下是C语言实现DES算法的关键步骤: 1. **密钥扩展**:DES的56位密钥需要经过一系列的移位操作扩展成64位,然后分为左右两半,每...

    3DES加密java实现

    本篇文章将详细探讨Java环境下如何实现3DES加密算法,并介绍相关知识点。 首先,让我们了解3DES的工作原理。3DES是对原始DES算法的扩展,它通过执行三次加密过程来提高安全性。简而言之,3DES分为两种模式:EDE...

    DES.rar_DES java_DES JAVA_Des___JAVA_des_java des

    标题中的"DES.rar_DES java_DES JAVA_Des___JAVA_des_java des"表明这是一个关于Java实现DES加密算法的压缩包文件。DES(Data Encryption Standard)是一种广泛应用的块密码,它在1970年代由IBM开发,后来被美国国家...

    用java实现des加密

    Java DES加密是一种在Java编程环境中实现的对称加密算法,主要用来保护数据的安全性。DES(Data Encryption Standard)是早期广泛使用的一种加密标准,虽然现在已经被更安全的AES(Advanced Encryption Standard)所...

    des.rar_DES CBC JAVA_OFB_cbc_cfb_java des cbc

    6. **Java DES实现**:Java的JCE框架提供了`javax.crypto.Cipher`类,用于实现各种加密算法和模式。通过实例化`Cipher`对象,设置合适的算法、工作模式和填充模式,可以实现对数据的加密和解密。 7. **应用场景**:...

    DES算法Java实现

    在Java中实现DES算法,主要涉及到`java.security`和`javax.crypto`这两个包。首先,我们需要创建一个`SecretKey`对象,这个对象包含了用于加密和解密的密钥。DES密钥长度固定为64位,但实际有效位只有56位,因为每8...

    des加密解密java实现版本

    在Java中实现DES加密和解密是一项常见的任务,通常涉及到`javax.crypto`包中的类和接口。本篇文章将详细阐述DES加密解密的Java实现过程。 首先,我们需要了解DES算法的基本原理。DES是一种块密码,它将明文数据分成...

    Java实现文件的RSA和DES加密

    Java 实现文件的 RSA 和 DES 加密 在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的...

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

    在Java中实现DES加密,主要涉及到`javax.crypto`包中的类,如`KeyGenerator`用于生成密钥,`Cipher`用于进行加解密操作。首先,你需要生成一个DES密钥,这通常包括设定密钥长度(DES的标准长度为56位,但在Java中是...

    Des___JAVA.rar_DES JAVA_DES 加密_des算法

    在提供的压缩包文件中,"www.pudn.com.txt"可能包含有关这个Java DES实现的更多细节或者示例代码,而"Des___JAVA"可能是源代码文件夹。通过这些资源,你可以更深入地理解如何在Java中使用DES算法进行加密和解密操作...

    JAVA实现DES加密

    在Java中实现DES加密,我们可以按照以下步骤进行。 首先,让我们理解DES算法的基本原理。DES是一种分组密码,它将明文数据分为64位的数据块进行处理。但是,实际的DES算法只使用了56位的密钥,因为其中8位是奇偶...

    JAVA实现DES加解密系统

    **JAVA实现DES加解密系统** DES(Data Encryption Standard)是一种经典的对称加密算法,它在信息安全领域有着广泛的应用。本文将深入探讨如何使用Java语言实现DES加解密系统,以及涉及的相关技术点。 首先,DES...

    java des算法实现加密文字以及图片

    java的DES算法实现,可以加密文字以及图片,引用java加密的包

    java实现DES

    "java实现DES加密算法" Java实现DES(Data Encryption Standard)加密算法是一种对称加密算法,该算法使用Feistel网络结构,通过分组网络和子密钥生成来实现加密和解密。下面是Java实现的DES加密算法的知识点: ...

    java实现DES对称加密

    这里要注意,DES的密钥长度必须是8字节,且Java中的DES实现会忽略密钥的第8字节,因此建议使用7字节或更少的字符来创建密钥。 3. 初始化Cipher对象: ```java Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5...

    用Java实现的DES加密算法

    本程序是java语言实现的DES加密算法的实例。

    Des.JAVA.rar_DES.java_DES加密_java DES 128bit_java des_加密解密

    标题中的"Des.JAVA.rar_DES.java_DES加密_java DES 128bit_java des_加密解密"表明这是一个关于Java实现DES(Data Encryption Standard)加密算法的压缩包,其中包含用于加密和解密的源代码。DES是一种对称加密算法...

    JAVA实现DES算法

    JAVA实现DES加密 public class DES1 { public static final String KEY_ALGORITHM = "DES"; public static final String CIPHER_ALGORITHM="DES/ECB/PKCS5Padding"; private static Key toKey(byte[] key) ...

    DES加密Java实现

    DES加密的Java实现,从算法来实现。

Global site tag (gtag.js) - Google Analytics