`
namezhou
  • 浏览: 158586 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java Des算法实现高速文件加密解密

 
阅读更多
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 算法 用java写的des算法实现加密解密

    C语言实现DES加密解密算法

    DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 位密钥对 64 位数据块进行加密。下面是 DES 加密解密算法的 C 语言实现的知识点总结。 字节与二进制转换 在...

    des加密算法实现任意文件加解密

    在本文中,我们将深入探讨DES算法的原理、实现过程以及如何用Java来实现在文件加解密上的应用。 DES算法基于Feistel结构,它将明文分为64位的数据块,通过一系列的替换(Substitution)和置换(Permutation)操作...

    DES算法 加密算法解密算法

    DES 算法加密算法解密算法 DES 算法概述 DES(Data Encryption Standard)是一种对称密钥块加密算法,由美国 IBM 公司的 W. Tuchman 和 C. Meyer 于 1971-1972 年研制成功。1973 年,美国国家标准局(NBS)公开...

    VB实现DES加密解密算法,vb加密和解密,VBA

    - 创建DESCryptoServiceProvider对象,这是VB中实现DES算法的入口。 - 设置密钥和初始化向量(IV)。DES算法需要一个64位的密钥,但只有56位真正参与加密,剩下的8位用于奇偶校验。同时,IV用于初始块加密状态,...

    java和javascript之间的DES加密解密

    2. **Java实现DES加密解密**: 在Java中,可以使用`javax.crypto`包来实现DES加密解密。首先,创建一个KeyGenerator对象,设置为DES算法,然后生成密钥。接着,创建Cipher对象,初始化为加密或解密模式,并使用密钥...

    DES算法实现文件加解密

    在实现DES算法进行文件加解密的过程中,我们通常会遵循以下步骤: 1. **密钥生成**:首先,用户需要提供一个56位的密钥。由于DES原始密钥是64位,但其中包含8位奇偶校验位,实际有效密钥长度为56位。在控制台环境中...

    密码学DES算法的实现 含有加密和解密

    在实现DES算法时,需要使用C++语言编写程序,利用数组和循环语句来实现DES算法的加密和解密过程。以下是DES算法的源代码: ``` #include int S[8][4][16]={ ... // S盒的值 }; void encrypt(char *plain, char *...

    用 MFC 实现 DES 加密解密算法

    本文将深入探讨如何使用MFC(Microsoft Foundation Classes)库实现DES(Data Encryption Standard)加密解密算法,以及如何支持文件的打开和保存操作。 DES是一种对称加密算法,由IBM在1970年代开发,并在1977年被...

    DES文件加密解密算法实现

    在"DES文件加密解密算法实现"中,提到的CBC(Cipher Block Chaining)模式是一种常用的块加密模式。在CBC模式下,每个明文块都会与前一个密文块进行异或操作后再进行加密。这样做的目的是为了增加加密的复杂性和安全...

    java实现的des算法加密及解密

    用java写的des算法加密及解密过程

    Java实现文件的RSA和DES加密

    4. Java 中的实现:在 Java 中,实现 DES 加密算法可以通过生成一对密钥,然后保存到 xml 文件中,以便以后获取私匙和公钥。文件加密可以通过使用 Cipher 对象来实现。 5. 密钥管理:对称加密算法的密钥管理是一个...

    DES算法加密解密文件

    DES算法加密解密1M文件,并计算加密和解密时间

    des算法加密解密文件

    它在信息安全领域扮演了重要的角色,尤其在文件加密解密方面。DES算法使用56位的密钥,通过一系列复杂的置换和混淆操作对64位的数据块进行加密。尽管DES现在被认为安全性较低,因为它相对较短的密钥长度容易受到现代...

    java_DES加密解密源码.rar_DES加密_des_java DES_java des_加密 解密

    Java实现des加密解密算法,des加密解密算法

    matlab实现DES加密解密算法

    加密为直接输入十六进制的(消息,密钥,1);解密为(密文,密钥,2);Index=1为加密,不为1为解密

    java实现文件加密解密

    "java实现文件加密解密" Java 实现文件的加密与解密是指利用 Java 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,...

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

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

    des加密算法(js+java)js加密 java解密

    des加密算法(js+java)加密与解密结果相同 包含三个文件 : des.js des.html ,用于实现前端脚本的加密与... des.java 用于后台的加密解密操作; 项目中正好用到,已经过验证,两个加密解密结果相同,分享给大家!

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

    DES算法在1970年代由IBM开发,并在1977年被美国国家标准局(NIST)采纳为标准。该算法的核心是Feistel网络,它通过16轮迭代过程将明文转换成密文。每轮迭代中包含了一系列的子步骤,如置换、异或和函数F。DES虽然...

Global site tag (gtag.js) - Google Analytics