Java 输出流解密

概要:

本实例演示了针对输出流的解密,将加密的文件内容进行解密,并把解密的结果输出到指定文件中。

| |目录

技术要点

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

  • 密钥生成。

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

  • 创建加密的输出流。

  • 创建CipherOutputStream对象。

  • 写输出流。

代码实现

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

Out_java.dat获取方式:Java 输出流加密


package net.xsoftlab.baike;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.CipherOutputStream;
public class D_OutStream {
	public static void main(String args[]) throws Exception {
		FileInputStream fis = new FileInputStream("key1.dat");// 获取密钥
		ObjectInputStream ois = new ObjectInputStream(fis);
		Key key = (Key) ois.readObject();// 生成密钥
		Cipher cp = Cipher.getInstance("DESede");// 创建密码器
		cp.init(Cipher.DECRYPT_MODE, key);// 初始化密码器
		FileInputStream in = new FileInputStream("Out_java.dat");// 获取需解密的文件
		FileOutputStream out = new FileOutputStream("Dec_java.txt");// 指定输出密文的文件
		CipherOutputStream cout = new CipherOutputStream(out, cp);// 创建CipherOutputStream对象
		int b = 0;
		System.out.println("对文件输出流加密的密文如下:");
		while ((b = in.read()) != -1) {// 写出流
			cout.write(b);
		}
		// 关闭流
		cout.close();
		out.close();
		in.close();
	}
}

程序解读

  1. "FileInputStream in=new FileInput-Stream("file/Out_java.dat");"该语句的主要作用是获取要解密的内容。在这里是要获取对输出流进行加密的文件的内容。

  2. 同java.io包中的基本的输出流一样使用write()方法向CipherOutputStream流中写数据,该数据为需要解密的密文,本实例从文件中使用read()方法从file/Out_java.dat文件中读取密文,则在写之前CipherOutputStream流会自动按照其参数中的密码器设置先进行解密操作,然后再写入其参数中的输出流中。

  3. 最后将解密的结果输出到指定文件中。


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