Java 输入流解密

概要:

本实例演示了针对输入流的解密,将加密文件进行解密,并把解密的结果输入指定的另外一个文件。

| |目录

技术要点

输入流的解密的技术要点如下:

  • 密钥生成。

  • 初始化密码器:cp.init(Cipher.DECRYPT_MODE,k);

  • 获取解密的内容。

  • 创建CipherInputStream对象。

  • 读取输入流。

代码实现

说明:key1.dat的获取地址:Java 创建对称密钥

E_InStream.dat的获取地址:Java 输入流的加密

package net.xsoftlab.baike;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
public class D_InStream {
	public static void main(String args[]) throws Exception {
		// 生成密钥
		FileInputStream f = new FileInputStream("key1.dat");
		ObjectInputStream ob = new ObjectInputStream(f);
		Key k = (Key) ob.readObject();
		Cipher cp = Cipher.getInstance("DESede");// 创建密码器
		cp.init(Cipher.DECRYPT_MODE, k);// 初始化密码器
		FileInputStream in = new FileInputStream("E_InStream.dat");// 获取要解密的文件
		CipherInputStream cin = new CipherInputStream(in, cp);// 创建CipherInputStream对象
		int b = 0;
		System.out.println("对文件输入流解密的原文如下:");
		while ((b = cin.read()) != -1) {// 读取输入流
			System.out.print((char) b);
		}
	}
}

程序解读

  1. "FileInputStream f=new FileInput-Stream("key1.dat");"该语句从文件中读取加密时所用的密钥,这样保证了本实例所用的密钥和加密时的密钥相同,以便于对比解密后的结果。

  2. "FileInputStream in=new FileInputStream("E_InStream.dat");"该语句的作用是获取要解密的文件,本程序是以上一个实例加密创建的文件为例,因此创建文件输入流,文件名为E_InStream.dat。

  3. "CipherInputStream cin=new CipherInputStream(in,cp);"该语句的作用是创建CipherInputStream对象,根据前面所创建好的密码器和输入流为参数构造CipherInputStream对象。

  4. 同java.io包中的基本的输入流一样使用read()方法从CipherInputStream流中读取数据,则在读取过程中会自动根据密码器中的设置进行解密。


评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
  • 全部评论(0)
资料加载中...
已关注 , 取消