`

Java DES加密工具

阅读更多
1、DES算法的原理
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。

2、DES算法的安全性
2.1.安全性比较高的一种算法,目前只有一种方法可以破解该算法,那就是穷举法.
2.2.采用64位密钥技术,实际只有56位有效,8位用来校验的.譬如,有这样的一台PC机器,
   它能每秒计算一百万次,那么256位空间它要穷举的时间为2285年.所以这种算法还是比较安全的一种算法.
   该算法被用来解决使用 DES 技术的 56 位时密钥日益减弱的强度,其方法是:使用两个独立密钥对明文运
   行 DES 算法三次,从而得到 112 位有效密钥强度。有时称为 DESede(表示加密、解密和加密这三个阶段)。
3、DESJava工具代码
package com.kvt.lbs.utils;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class EncryptDES
{
	/** 指定加密算法为DESede */
	private static String ALGORITHM = "DESede";
	/** 指定密钥存放文件 */
	private static String KEYFile = "KeyFile";

	/**
	 * 生成密钥
	 */
	private static void generateKey() throws Exception
	{
		/** DES算法要求有一个可信任的随机数源 */
		SecureRandom sr = new SecureRandom();
		/** 为DES算法创建一个KeyGenerator对象 */
		KeyGenerator kg = KeyGenerator.getInstance(ALGORITHM);
		/** 利用上面的随机数据源初始化这个KeyGenerator对象 */
		kg.init(sr);
		/** 生成密匙 */
		SecretKey key = kg.generateKey();
		/** 用对象流将生成的密钥写入文件 */
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(KEYFile));
		oos.writeObject(key);
		/** 清空缓存,关闭文件输出流 */
		oos.close();
	}

	/**
	 * 加密方法
	 * 
	 * source 源数据
	 */
	public static String encrypt(String source) throws Exception
	{
		generateKey();
		/** 将文件中的SecretKey对象读出 */
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream(KEYFile));
		SecretKey key = (SecretKey) ois.readObject();
		/** 得到Cipher对象来实现对源数据的DES加密 */
		Cipher cipher = Cipher.getInstance(ALGORITHM);
		cipher.init(Cipher.ENCRYPT_MODE, key);
		byte[] b = source.getBytes();
		/** 执行加密操作 */
		byte[] b1 = cipher.doFinal(b);
		BASE64Encoder encoder = new BASE64Encoder();
		return encoder.encode(b1);
	}

	/**
	 * 解密密钥 cryptograph:密文
	 */
	public static String decrypt(String cryptograph) throws Exception
	{
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream(KEYFile));
		SecretKey key = (SecretKey) ois.readObject();
		Cipher cipher = Cipher.getInstance(ALGORITHM);
		cipher.init(Cipher.DECRYPT_MODE, key);
		BASE64Decoder decoder = new BASE64Decoder();
		byte[] b1 = decoder.decodeBuffer(cryptograph);
		byte[] b = cipher.doFinal(b1);
		return new String(b);
	}

	public static void main(String[] args) throws Exception
	{
		// 要加密的字符串
		String source = "Hello World!";
		// 生成的密文
		String cryptograph = encrypt(source);
		System.out.println(cryptograph);

		// 解密密文
		String target = decrypt(cryptograph);
		System.out.println(target);
	}

}

说明:资料来自于http://blog.chiefleo.me/archives/159http://baike.baidu.com/link?url=YfORHQKbUB_XdE3sbT9LLQ5oCPf_tnK6s7SjO3V82Kh6LzMiZN248D0ztFZAfKbe6ToTJEMcCVU7MhlEx9wKLa
分享到:
评论

相关推荐

    DES加密解密Java工具

    通过上述步骤,DESEncrypt.java工具类应该实现了DES加密和解密的功能。使用此类时,只需提供密钥和数据,即可完成加解密操作。不过,对于现代安全标准来说,建议使用更强大的加密算法,如AES,并结合合适的密钥管理...

    java加密工具类 DESUtils

    des是java开发中比较常见的加密方式,多用于加密要求不是很严格的地方,其优点为算法速度比非对称加密的快,缺点为加密密钥和解密密钥为同一个。将加密方式封装成一个工具类,便于使用,可指定密钥或使用默认密钥,...

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

    总的来说,这个压缩包提供了一套完整的Java实现的DES加密解密工具,包括核心算法、子密钥生成、文件加密等功能,对于学习DES算法和在Java项目中使用DES加密的开发者来说,是一个非常实用的资源。使用者可以通过阅读...

    java 3des加密、解密工具类

    java 3des加密、解密工具类 java的3DES加密/解密

    JAVA实现DES加密

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

    DES加密解密java工具类

    DES加密解密java工具类 public static final String KEY_ALGORITHM = "DES"; public static final String CIPHER_ALGORITHM = "DES/ECB/PKCS5PADDING"; validKeySpecException, NoSuchPaddingException, ...

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

    总之,这个压缩包提供了一个用Delphi编写的DES加密解密工具和一个用Java实现的DES类,对于学习和理解DES算法以及在不同编程环境中如何实现它非常有帮助。同时,这也涉及到密钥管理和加密安全的实践问题,对于软件...

    vue DES加密解密工具类 des.js

    vue DES加密解密工具类 des.js,与博文中的匹配,为封装好的完整工具类

    Java实现的3des加密解密工具类示例

    Java实现的3DES加密解密工具类示例 【Java实现的3DES加密解密工具类】 Java实现的3DES加密解密工具类是指使用Java语言实现的三重数据加密算法工具类,该工具类提供了加密和解密两种操作模式,通过设置密钥和加密/...

    Java AES DES加密算法的坑

    总结来说,理解和正确使用Java中的AES和DES加密算法,需要考虑密钥管理、初始化向量、填充模式、编码以及错误处理等多个方面,同时要关注加密过程中的安全风险和潜在陷阱。在实践中,结合合适的加密库和最佳实践,...

    java DES 加密解密算法(内有测试)

    这篇博客文章“java DES 加密解密算法(内有测试)”可能详细介绍了如何在Java中实现DES加密和解密的过程。通常,Java通过`javax.crypto`包提供DES加密的相关功能。下面我们将深入探讨DES加密解密的基本原理和Java中...

    DES加密算法JAVA实现

    ### DES加密算法JAVA实现 #### 一、目的与意义 随着信息技术的快速发展,信息安全变得尤为重要。无论是政府机构、企业还是个人用户,都需要确保敏感信息不被未经授权的人访问。在这种背景下,密码学作为保障信息...

    java php DES 加密解密

    在Java中,DES加密解密主要通过`javax.crypto`包中的类来实现。首先,我们需要一个密钥,通常是8字节的字节数组。然后,使用`KeyGenerator`生成一个DES密钥。接下来,创建`Cipher`对象并初始化它,根据需要进行加密...

    DES加密解密一套JAVA&IOS

    本资源"DES加密解密一套JAVA&IOS"提供了一套跨平台的解决方案,允许JAVA和iOS应用之间进行互操作性的加密和解密操作。 在JAVA平台上,DES加密和解密通常通过Java的`javax.crypto`包来实现。这个包提供了`Cipher`类...

    Java和C#通过DES加密得到相同数据

    这两个文件很可能是实现上述加密逻辑的源代码,分别对应C#和Java版本的DES加密工具类。通过分析这些文件,可以更深入地了解具体实现细节,包括密钥和IV的生成、加密和解密的完整过程,以及可能存在的任何特定兼容性...

    des的加密swing工具

    des加密工具

    加密算法工具类

    本文将详细介绍标题中提到的"加密算法工具类",包括MD5、DES3、DES、AES、BASE64以及SHA这七种常见的加密算法,并讨论它们在Java环境中的应用。 首先,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数...

    java 文件夹加密工具

    Java 文件夹加密工具是一种基于Java编程语言开发的实用程序,主要功能是对用户的文件或文件夹进行加密,以保护数据的安全性。由于它被打包成了exe可执行文件,这意味着非Java环境的用户也能直接运行,无需安装Java...

    JCT - java加密解密工具包.zip_Java加密_java 加密_jct java_加密 解密_加密工具

    Java加密解密工具包,通常用于保护敏感数据的安全,防止未经授权的访问或篡改。这个名为"JCT"的工具包提供了丰富的功能,使得开发者在Java应用中集成加密和解密操作变得更加简单。下面我们将详细探讨Java加密的相关...

    DES加密 java与.net可以相互加密解密两种方法

    在Java和.NET平台上,我们可以使用内置的加密库实现DES加密和解密。本文将详细介绍如何在Java和.NET中实现互操作的DES加密解密,并提供两种不同的方法。 **方法一:使用标准库** 1. **Java实现**: - 引用`javax....

Global site tag (gtag.js) - Google Analytics