import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.CipherInputStream; import javax.crypto.CipherOutputStream; import javax.crypto.KeyGenerator; //java给文件加密使用的md5的加密算法,实例如下: public class FileEncryptionUtil { Key key; public FileEncryptionUtil(String str) { getKey(str);// 生成密匙 System.out.println(key); } /** * 根据参数生成KEY */ public void getKey(String strKey) { try { KeyGenerator _generator = KeyGenerator.getInstance("DES"); _generator.init(new SecureRandom(strKey.getBytes())); this.key = _generator.generateKey(); _generator = null; } catch (Exception e) { throw new RuntimeException("Error initializing SqlMap class. Cause: " + e); } } /** * 文件file进行加密并保存目标文件destFile中 * * @param file * 要加密的文件 如c:/test/srcFile.txt * @param destFile * 加密后存放的文件名 如c:/加密后文件.txt */ public void encrypt(String file, String destFile) throws Exception { long times = System.currentTimeMillis(); // Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding"); // 参数String transformation的格式是“算法/工作模式/填充模式”,不同的算法支持不同的工作模式以及填充模式。 Cipher cipher = Cipher.getInstance("DES");// 实例化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, this.key);// 用于将Cipher初始化为加密模式的常量 // 初始化Cipher对象,用于包装 InputStream is = new FileInputStream(file); int size = is.available() / 1024 / 1024; System.out.println("文件大小:" + size + "MB"); OutputStream out = new FileOutputStream(destFile); CipherInputStream cis = new CipherInputStream(is, cipher); byte[] buffer = new byte[1024]; int r; while ((r = cis.read(buffer)) > 0) { out.write(buffer, 0, r); } long allTimes = (System.currentTimeMillis() - times) / 1000; long speed = size / allTimes; System.out.println("完成加密!"); System.out.println("总共耗时:" + allTimes + "秒"); System.out.println("转换速率:" + speed + "MB/秒"); cis.close(); is.close(); out.close(); } /** * 文件采用DES算法解密文件 * * @param file * 已加密的文件 如c:/加密后文件.txt * @param destFile 解密后存放的文件名 如c:/ * test/解密后文件.txt */ public void decrypt(String file, String dest) throws Exception { long times = System.currentTimeMillis(); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, this.key);// 用于将Cipher初始化为解密模式的常量 InputStream is = new FileInputStream(file); int size = is.available() / 1024 / 1024; System.out.println("文件大小:" + size + "MB"); OutputStream out = new FileOutputStream(dest); CipherOutputStream cos = new CipherOutputStream(out, cipher); byte[] buffer = new byte[1024]; int r; while ((r = is.read(buffer)) >= 0) { cos.write(buffer, 0, r); } long allTimes = (System.currentTimeMillis() - times) / 1000; long speed = size / allTimes; System.out.println("完成解密!"); System.out.println("总共耗时:" + allTimes + "秒"); System.out.println("转换速率:" + speed + "MB/秒"); cos.close(); out.close(); is.close(); } public static void main(String[] args) throws Exception { FileEncryptionUtil td = new FileEncryptionUtil("****************"); // td.encrypt("f:/1.avi", "f:/1解密.avi"); // 加密 td.decrypt("f:/1解密.avi", "f:/11.avi"); // 解密 } }
相关推荐
java 加密解密 des 算法 用java写的des算法实现加密解密
DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 位密钥对 64 位数据块进行加密。下面是 DES 加密解密算法的 C 语言实现的知识点总结。 字节与二进制转换 在...
在本文中,我们将深入探讨DES算法的原理、实现过程以及如何用Java来实现在文件加解密上的应用。 DES算法基于Feistel结构,它将明文分为64位的数据块,通过一系列的替换(Substitution)和置换(Permutation)操作...
DES 算法加密算法解密算法 DES 算法概述 DES(Data Encryption Standard)是一种对称密钥块加密算法,由美国 IBM 公司的 W. Tuchman 和 C. Meyer 于 1971-1972 年研制成功。1973 年,美国国家标准局(NBS)公开...
- 创建DESCryptoServiceProvider对象,这是VB中实现DES算法的入口。 - 设置密钥和初始化向量(IV)。DES算法需要一个64位的密钥,但只有56位真正参与加密,剩下的8位用于奇偶校验。同时,IV用于初始块加密状态,...
2. **Java实现DES加密解密**: 在Java中,可以使用`javax.crypto`包来实现DES加密解密。首先,创建一个KeyGenerator对象,设置为DES算法,然后生成密钥。接着,创建Cipher对象,初始化为加密或解密模式,并使用密钥...
在实现DES算法进行文件加解密的过程中,我们通常会遵循以下步骤: 1. **密钥生成**:首先,用户需要提供一个56位的密钥。由于DES原始密钥是64位,但其中包含8位奇偶校验位,实际有效密钥长度为56位。在控制台环境中...
在实现DES算法时,需要使用C++语言编写程序,利用数组和循环语句来实现DES算法的加密和解密过程。以下是DES算法的源代码: ``` #include int S[8][4][16]={ ... // S盒的值 }; void encrypt(char *plain, char *...
本文将深入探讨如何使用MFC(Microsoft Foundation Classes)库实现DES(Data Encryption Standard)加密解密算法,以及如何支持文件的打开和保存操作。 DES是一种对称加密算法,由IBM在1970年代开发,并在1977年被...
在"DES文件加密解密算法实现"中,提到的CBC(Cipher Block Chaining)模式是一种常用的块加密模式。在CBC模式下,每个明文块都会与前一个密文块进行异或操作后再进行加密。这样做的目的是为了增加加密的复杂性和安全...
用java写的des算法加密及解密过程
4. Java 中的实现:在 Java 中,实现 DES 加密算法可以通过生成一对密钥,然后保存到 xml 文件中,以便以后获取私匙和公钥。文件加密可以通过使用 Cipher 对象来实现。 5. 密钥管理:对称加密算法的密钥管理是一个...
DES算法加密解密1M文件,并计算加密和解密时间
它在信息安全领域扮演了重要的角色,尤其在文件加密解密方面。DES算法使用56位的密钥,通过一系列复杂的置换和混淆操作对64位的数据块进行加密。尽管DES现在被认为安全性较低,因为它相对较短的密钥长度容易受到现代...
Java实现des加密解密算法,des加密解密算法
加密为直接输入十六进制的(消息,密钥,1);解密为(密文,密钥,2);Index=1为加密,不为1为解密
"java实现文件加密解密" Java 实现文件的加密与解密是指利用 Java 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,...
总的来说,这个压缩包提供了一套完整的Java实现的DES加密解密工具,包括核心算法、子密钥生成、文件加密等功能,对于学习DES算法和在Java项目中使用DES加密的开发者来说,是一个非常实用的资源。使用者可以通过阅读...
des加密算法(js+java)加密与解密结果相同 包含三个文件 : des.js des.html ,用于实现前端脚本的加密与... des.java 用于后台的加密解密操作; 项目中正好用到,已经过验证,两个加密解密结果相同,分享给大家!
DES算法在1970年代由IBM开发,并在1977年被美国国家标准局(NIST)采纳为标准。该算法的核心是Feistel网络,它通过16轮迭代过程将明文转换成密文。每轮迭代中包含了一系列的子步骤,如置换、异或和函数F。DES虽然...