- 浏览: 304028 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (167)
- <HTML and JavaScript and CSS> (6)
- 《Java2 基础知识及概念》 (3)
- Java2 Tools及其他 (11)
- EJB2.0 相关 (3)
- 英语学习 (4)
- Oracle Database Server (27)
- 计算机理论 (9)
- Java持久层框架 (2)
- 《Linux操作系统》 (24)
- 杂项技术 (4)
- Application Server (15)
- Windows操作系统 (7)
- Java中间件 (6)
- 娱乐生活 (4)
- 《Java设计模式》 (3)
- 《Interview Skill》 (1)
- 《Struts原理及应用》 (1)
- Workflow (2)
- 云计算 (3)
- 项目实践 (3)
- WEB相关技术 (10)
- JavaScript技巧及应用 (1)
最新评论
package util; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import java.security.*; import java.io.*; /** * Created by IntelliJ IDEA. * User: Administrator * Date: Dec 4, 2003 * Time: 9:29:19 PM * To change this template use Options | File Templates. *@author xiaoyusong@etang.com * 该类是加密处理类.主要用来对数据进行加密,解密操作. */ public class DESEncryptUtil { /** * 获得DES加密的密钥。在交易处理的过程中应该定时更 * 换密钥。需要JCE的支持,如果jdk版本低于1.4,则需要 * 安装jce-1_2_2才能正常使用。 * @return Key 返回对称密钥 * @throws java.security.NoSuchAlgorithmException * @see util.EncryptUtil 其中包括加密和解密的方法 */ public static Key getKey() throws NoSuchAlgorithmException { Security.insertProviderAt(new com.sun.crypto.provider.SunJCE(), 1); KeyGenerator generator = KeyGenerator.getInstance("DES"); generator.init(new SecureRandom()); Key key = generator.generateKey(); return key; } /** * 将指定的数据根据提供的密钥进行加密 * @param key 密钥 * @param data 需要加密的数据 * @return byte[] 加密后的数据 * @throws util.EncryptException */ public static byte[] doEncrypt(Key key, byte[] data) throws EncryptException { try { //Get a cipher object Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); //Encrypt cipher.init(Cipher.ENCRYPT_MODE, key); //byte[] stringBytes = amalgam.getBytes("UTF8"); byte[] raw = cipher.doFinal(data); //BASE64Encoder encoder = new BASE64Encoder(); //String base64 = encoder.encode(raw); return raw; } catch (Exception e) { e.printStackTrace(); throw new EncryptException("Do encrypt occurs Exception.[" + e.getMessage() + "]"); } } /** * 将给定的已加密的数据通过指定的密钥进行解密 * @param key 密钥 * @param raw 待解密的数据 * @return byte[] 解密后的数据 * @throws util.EncryptException */ public static byte[] doDecrypt(Key key, byte[] raw) throws EncryptException { try { //Get a cipher object Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); // Decrypt cipher.init(Cipher.DECRYPT_MODE, key); //BASE64Decoder decoder = new BASE64Decoder(); //byte[] raw = decoder.decodeBuffer(data); byte[] data = cipher.doFinal(raw); //String result = new String(stringBytes, "UTF8"); //System.out.println("the decrypted data is: " + result); return data; } catch (Exception e) { e.printStackTrace(); throw new EncryptException("Do decrypt occurs Exception.[" + e.getMessage() + "]"); } } /** * 得到一个密钥的密码 * @param key 密钥 * @param cipherMode 密码的类型 * @return Cipher * @throws util.EncryptException 当加密出现异常情况时,产生异常信息 */ public static Cipher getCipher(Key key, int cipherMode) throws EncryptException { try { Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); cipher.init(cipherMode, key); return cipher; } catch (Exception e) { e.printStackTrace(); throw new EncryptException("Generate Cipher occurs Exception.[" + e.getMessage() + "]"); } } public static void main(String[] args) throws Exception { Key key = DESEncryptUtil.getKey(); File file = new File("test.html");//随便找个文件发在当前运行目录下 FileInputStream in = new FileInputStream(file); ByteArrayOutputStream bout = new ByteArrayOutputStream(); byte[] tmpbuf = new byte[1024]; int count = 0; while ((count = in.read(tmpbuf)) != -1) { bout.write(tmpbuf, 0, count); tmpbuf = new byte[1024]; } in.close(); byte[] orgData = bout.toByteArray(); byte[] raw = DESEncryptUtil.doEncrypt(key,orgData); file = new File("encrypt_result.dat"); OutputStream out = new FileOutputStream(file); out.write(raw); out.close(); byte[] data = DESEncryptUtil.doDecrypt(key, raw); file = new File("decrypt_result.html"); out = new FileOutputStream(file); out.write(data); out.flush(); out.close(); } }
发表评论
文章已被作者锁定,不允许评论。
-
《java多线程学习-java.util.concurrent详解》
2011-03-31 06:27 1595执行框程序(Executor):最 ... -
《浅谈java.util.concurrent包的并发处理》
2011-03-30 23:55 1325java.util.concurrent下主要的接口和类: ... -
《中文化和国际化问题(4)--Java中文化和国际化攻略》
2010-08-11 22:32 1018一般攻略 既然在Java内部是直接使用Unicode表示 ... -
《中文化和国际化问题(3)--Java中文问题分析》
2010-08-11 22:22 1323章从实际的中文问题中,分析问题的根本原因,以及解决之道。 ... -
《中文化和国际化问题(2)--Java国际化基础》
2010-08-04 23:04 1144Java的字符类型 和C语言不同,Java的字符类型“c ... -
字符,字节和编码
2010-08-03 08:00 823http://www.360doc.com/relevant/ ... -
《中文化和国际化问题(1)--字符编码发展历程》
2010-08-03 07:43 1278作者序 在我开发 Java ... -
《利用JDK中自带的native2ascii进行unicode和字符的互转》
2010-08-03 07:12 937中文转UNICODE(srcFileName为中文文件路径) ... -
《DatabaseMetaData和ResultSetMetaData用法实例》
2009-03-02 15:55 3635有关DatabaseMetaData的用法 一 、得到这个 ... -
《Base64编码和解码》
2009-02-11 10:19 1221import sun.misc.BASE64Encoder; ...
相关推荐
其中,key为加密/解密时使用的 密钥;data为加密/解密的数据;mode为其工作模式:当模式为加密模 式时,明文按照64位进行分组,形成明文分组,此时key用于对数据 加密;当模式为解密模式时,key用于对64位的密文...
文件名"DES"可能指的是源代码文件,包含了上述C++类的实现。通过阅读这个源代码,我们可以了解到如何在C++中使用DES算法进行加密和解密的具体步骤,包括密钥的处理、数据的分块以及迭代过程等。如果需要提高安全性,...
DES(Data Encryption Standard)是一种经典的对称加密算法,由IBM在1970年代初开发,1977年被美国国家标准局(NIST)采纳为标准。它使用64位的数据块进行加密和解密,其中包含56位的密钥。DES虽然现在被认为安全性...
DES(Data Encryption Standard)是一种广泛使用的对称加密算法,它基于块加密模式,每个数据块长度为64位,密钥长度为56位。在VB6.0(Visual Basic 6.0)环境中实现DES加密解密是编程中常见的一种需求,主要用于...
C语言实现的DES对称加密算法,老师布置的实验作业,原创,花了不少时间才调试成功。
3. **加密源代码**: ```java // 获取Cipher实例 Cipher cipher = Cipher.getInstance("DES"); // 初始化Cipher为加密模式 cipher.init(Cipher.ENCRYPT_MODE, key, sr); // 从文件中读取待加密的数据 ...
这个"RsaAndDesTest"可能包含了这些功能的具体实现,你可以进一步查看源代码以获取更多信息。 通过了解RSA和DES加密的基本原理以及如何在Java中实现,开发者可以在自己的应用程序中有效地保护数据安全,确保通信的...
理解这些知识点后,你可以通过阅读源代码来深入学习DES加密算法的具体实现细节,包括如何组织数据,如何进行密钥扩展,以及在每轮迭代中如何应用S盒和D盒操作。这将有助于你掌握密码学基础和C++编程技巧。
DES(Data Encryption Standard)是一种经典的对称加密算法,1976年由美国国家标准局发布,广泛应用于数据安全领域。此“DES加密算法实验源代码”是用于教学实验,旨在帮助学习者深入理解DES的工作原理和实际操作...
DES(Data Encryption Standard)数据加密标准是一种经典的对称加密算法,由IBM在1970年代初开发,并在1977年由美国国家标准局(NIST)采纳为联邦信息处理标准(FIPS)。DES在密码学领域具有重要的历史地位,尽管它...
在给定的C++源代码片段中,我们可以看到以下关键组成部分: - **初始化置换表(IP)**:`const static char ip[]`定义了初始置换的顺序,它是一个64位的数组,每个值对应原始64位明文的某一位。 - **最终置换表...
本文将深入探讨对称加密的概念、工作原理,以及如何通过源代码实现文件的对称加密与解密。 对称加密是一种加密方法,其中加密和解密过程使用的是同一个密钥。这种方式简单高效,适用于大量数据的加密,因为它的计算...
Java中的DES(Data Encryption Standard)是一种广泛使用的对称加密算法,它基于一个固定的密钥进行数据的加密和解密。这个实例将详细讲解如何在Java...通过分析这些代码,你可以更好地理解和实践Java中的DES对称加密。
标题中的"C#编写的DES算法加密器+源代码"指的是使用C#编程语言实现的数据加密标准(DES)算法。DES是一种古老的对称加密算法,它使用一个56位的密钥来加密64位的数据块。尽管现在DES由于其相对较短的密钥长度已被...
这是一份实现DES加密算法的C语言源代码和描述DES算法的详细文档,为了便于理解算法的代码实现,还给出了一份详细中文注释的阅读代码, 在网上搜到的很多文档都讲的不是很清楚,希望这份文档能让你理解DES算法,并...
DES(Data Encryption Standard)是一种广泛使用的对称加密算法,由IBM在1970年代开发,并在1977年被美国国家标准局(NIST)采纳为标准。它基于Feistel结构,通过64位的数据块进行加密,使用56位的密钥。尽管现在DES...
标题中的“一个简单的Des字串加密源代码”指的是使用DES(Data Encryption Standard)算法进行字符串加密的编程示例。DES是一种对称加密算法,广泛应用于数据保护和信息安全领域。它基于64位的数据块和56位的密钥...
DES(Data Encryption Standard)是一种经典的对称加密算法,由IBM公司于...如果需要深入理解或分析特定的DES加密源代码,需要提供实际的源代码文件。不过,理解上述理论知识将有助于你理解和编写自己的DES加密程序。
DES(Data Encryption Standard)是一种广泛使用的对称加密算法,它基于Feistel结构,通过16轮迭代过程将64位的数据块转化为密文。在这个过程中,原始数据经过初始置换、扩展置换、异或操作、轮函数等步骤,每轮都有...
提供的压缩包文件6e6cbd12c84540d1aa029a55025426a4可能包含了C语言实现DES加密算法的源代码。通过阅读和理解这些代码,你可以深入学习DES算法的实现细节,如如何进行位操作、如何构造S盒和P盒、以及如何进行迭代...