- 浏览: 797698 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (151)
- Java-Basic (25)
- Java-NIO (3)
- Java-Mybatis (4)
- Java-Web (15)
- DB-oracle (18)
- DB-mysql (29)
- DB-sqlserver (4)
- DB-postgresql (2)
- DB-SQLite (1)
- DB-H2 (6)
- Tool-Flex (1)
- Tool-Ftp (3)
- Tool-Maven (5)
- Netlink (2)
- Web-CSS (3)
- Web-UI (1)
- Web-JavaScript (8)
- NoSQL (3)
- Mina (2)
- TCPUDP (2)
- SEO (2)
- Network (6)
- DataStructure (1)
- Website-test (1)
- Tool-Excel (1)
- Java-Concurrent (2)
- 前辈指点 (0)
- Eclipse plugins (1)
- DB-NoSQL (1)
最新评论
-
18322696278:
My97DatePicker控件显示时分秒 -
dllhenu:
你好,我让ol加载tiptip,但是tiptip没有在点所在的 ...
OpenLayers下使用Jquery tooltip(Qtip)让要素信息自动显示或隐藏 -
boonya:
你所说的是网页上选择文件路径吧,用ServletFileUpl ...
Apache提供的FTP文件上传下载 -
淡然若水:
我也是用这种方法啊。。。但是FileInputStream i ...
Apache提供的FTP文件上传下载 -
liuweihug:
json序列化反序列化插件-json2.js 介绍和使用 - ...
Json 数据反序列化为Java对象
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工具代码
说明:资料来自于http://blog.chiefleo.me/archives/159,http://baike.baidu.com/link?url=YfORHQKbUB_XdE3sbT9LLQ5oCPf_tnK6s7SjO3V82Kh6LzMiZN248D0ztFZAfKbe6ToTJEMcCVU7MhlEx9wKLa
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/159,http://baike.baidu.com/link?url=YfORHQKbUB_XdE3sbT9LLQ5oCPf_tnK6s7SjO3V82Kh6LzMiZN248D0ztFZAfKbe6ToTJEMcCVU7MhlEx9wKLa
发表评论
-
cache4jJava对象缓存使用示例
2013-10-28 18:16 01、下载cache4j http://source ... -
Json 数据反序列化为Java对象
2013-08-29 00:12 11591前言:我们在项目中经常用到的是Json格式的数据,如果是将一个 ... -
BeanUtils实现对Java对象的拷贝
2013-08-06 17:26 9089场景描述:两个对象字段一样,怎么简便地赋值呢?假设有两个实体类 ... -
Jackson时间格式及属性忽略
2013-05-17 13:16 15211、Date时间格式 当使用jackson在处理时间时,默认是 ... -
两种将Java对象转成JSON格式的方式
2013-05-16 13:14 2783前言:Java中数据传递到前端的时候很多情况都是JSON格式数 ... -
怎样比较两个集合是否相等
2013-05-16 10:49 6960受这篇文章启发:http://rijin.iteye.com/ ... -
Java字符串时间转Date工具
2013-04-27 00:13 1878注意:java.util.Date是无时区概念的,不用考虑时区 ... -
Java中变量的线程安全问题
2013-04-22 13:38 1833静态变量:线程非安全 ... -
项目中加入声音文件
2013-03-14 18:22 0Java web how to play audio? --- ... -
Timer、TimerTask实现定时业务处理
2013-03-14 20:26 15231、编写任务 package com.bo ... -
resteasy
2013-03-13 18:36 01、访问方式 PUT POST GET 2、下载资源ja ... -
Java中使用C3P0连接池
2013-03-13 00:25 221821、c3p0.properties c3p0.driverCl ... -
Jsoup解析URL或网页内容开发指南
2013-03-04 10:51 2479参考开发示例文档:http://www.open-open.c ... -
Java中线程池使用
2013-02-27 23:31 998摘自infoQ:http://www.infoq.com/cn ... -
Java中线程池使用
2013-02-27 23:27 21、合理使用线程池的好 ... -
Java中volatile实现线程间变量共享
2013-02-27 23:03 2408volatile变量自身具有下列特性: 可见性。对一个vol ... -
Java中Synchronized的使用注意事项
2013-02-26 14:21 1245转自:http://www.blogjava.net/free ... -
Java实现mysql存储过程调用
2013-02-19 21:41 1296------------------------------- ... -
Java多线程编程#线程等待机制
2013-02-16 15:37 11001、最佳的模型是:生产者-消费者 package com.b ... -
Java多线程编程#线程同步示例
2013-02-16 13:34 14081、线程不同步 在同一个进程中的线程都是独立运行的,线程之间会 ...
相关推荐
DES加密解密java工具类 public static final String KEY_ALGORITHM = "DES"; public static final String CIPHER_ALGORITHM = "DES/ECB/PKCS5PADDING"; validKeySpecException, NoSuchPaddingException, ...
通过上述步骤,DESEncrypt.java工具类应该实现了DES加密和解密的功能。使用此类时,只需提供密钥和数据,即可完成加解密操作。不过,对于现代安全标准来说,建议使用更强大的加密算法,如AES,并结合合适的密钥管理...
des是java开发中比较常见的加密方式,多用于加密要求不是很严格的地方,其优点为算法速度比非对称加密的快,缺点为加密密钥和解密密钥为同一个。将加密方式封装成一个工具类,便于使用,可指定密钥或使用默认密钥,...
总的来说,这个压缩包提供了一套完整的Java实现的DES加密解密工具,包括核心算法、子密钥生成、文件加密等功能,对于学习DES算法和在Java项目中使用DES加密的开发者来说,是一个非常实用的资源。使用者可以通过阅读...
java 3des加密、解密工具类 java的3DES加密/解密
在Java中实现DES加密,我们可以按照以下步骤进行。 首先,让我们理解DES算法的基本原理。DES是一种分组密码,它将明文数据分为64位的数据块进行处理。但是,实际的DES算法只使用了56位的密钥,因为其中8位是奇偶...
总之,这个压缩包提供了一个用Delphi编写的DES加密解密工具和一个用Java实现的DES类,对于学习和理解DES算法以及在不同编程环境中如何实现它非常有帮助。同时,这也涉及到密钥管理和加密安全的实践问题,对于软件...
vue DES加密解密工具类 des.js,与博文中的匹配,为封装好的完整工具类
Java实现的3DES加密解密工具类示例 【Java实现的3DES加密解密工具类】 Java实现的3DES加密解密工具类是指使用Java语言实现的三重数据加密算法工具类,该工具类提供了加密和解密两种操作模式,通过设置密钥和加密/...
总结来说,理解和正确使用Java中的AES和DES加密算法,需要考虑密钥管理、初始化向量、填充模式、编码以及错误处理等多个方面,同时要关注加密过程中的安全风险和潜在陷阱。在实践中,结合合适的加密库和最佳实践,...
这篇博客文章“java DES 加密解密算法(内有测试)”可能详细介绍了如何在Java中实现DES加密和解密的过程。通常,Java通过`javax.crypto`包提供DES加密的相关功能。下面我们将深入探讨DES加密解密的基本原理和Java中...
### DES加密算法JAVA实现 #### 一、目的与意义 随着信息技术的快速发展,信息安全变得尤为重要。无论是政府机构、企业还是个人用户,都需要确保敏感信息不被未经授权的人访问。在这种背景下,密码学作为保障信息...
在Java中,DES加密解密主要通过`javax.crypto`包中的类来实现。首先,我们需要一个密钥,通常是8字节的字节数组。然后,使用`KeyGenerator`生成一个DES密钥。接下来,创建`Cipher`对象并初始化它,根据需要进行加密...
本资源"DES加密解密一套JAVA&IOS"提供了一套跨平台的解决方案,允许JAVA和iOS应用之间进行互操作性的加密和解密操作。 在JAVA平台上,DES加密和解密通常通过Java的`javax.crypto`包来实现。这个包提供了`Cipher`类...
这两个文件很可能是实现上述加密逻辑的源代码,分别对应C#和Java版本的DES加密工具类。通过分析这些文件,可以更深入地了解具体实现细节,包括密钥和IV的生成、加密和解密的完整过程,以及可能存在的任何特定兼容性...
des加密工具
本文将详细介绍标题中提到的"加密算法工具类",包括MD5、DES3、DES、AES、BASE64以及SHA这七种常见的加密算法,并讨论它们在Java环境中的应用。 首先,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数...
Java 文件夹加密工具是一种基于Java编程语言开发的实用程序,主要功能是对用户的文件或文件夹进行加密,以保护数据的安全性。由于它被打包成了exe可执行文件,这意味着非Java环境的用户也能直接运行,无需安装Java...
Java加密解密工具包,通常用于保护敏感数据的安全,防止未经授权的访问或篡改。这个名为"JCT"的工具包提供了丰富的功能,使得开发者在Java应用中集成加密和解密操作变得更加简单。下面我们将详细探讨Java加密的相关...
在Java和.NET平台上,我们可以使用内置的加密库实现DES加密和解密。本文将详细介绍如何在Java和.NET中实现互操作的DES加密解密,并提供两种不同的方法。 **方法一:使用标准库** 1. **Java实现**: - 引用`javax....