Java 输出流加密

概要:

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

| |目录

技术要点

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

  • 密钥生成。

  • 初始化密码器。

  • 创建加密的输出流。

  • 创建CipherOutputStream对象。

  • 写输出流。

代码实现

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

    test.txt:在根目录新建一个文本文档随便输入写内容即可

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 E_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.ENCRYPT_MODE, key);// 初始化密码器
		FileInputStream in = new FileInputStream("test.txt");// 获取需加密的文件
		FileOutputStream out = new FileOutputStream("Out_java.dat");// 指定读出密文的文件
		CipherOutputStream cout = new CipherOutputStream(out, cp);// 创建CipherOutputStream对象
		int b = 0;
		int i = 1;
		System.out.println("对文件输出流加密的密文如下:");
		while ((b = in.read()) != -1) {// 写出流
			cout.write(b);
			System.out.print((byte) b + "  ");
			i++;
			if (i % 20 == 0)
				System.out.println();// 打印格式控制
		}
		// 关闭流
		cout.close();
		out.close();
		in.close();
	}
}

程序解读

  1. 生成密钥、创建并初始化密码器、创建要加密的输出流这三个步骤与输入流的加密是一样的,可以参考输入流的加密。

  2. "FileInputStream in=new FileInputStream("file/java.txt");"语句的主要作用是获取要加密或解密的内容。要加密的内容可以是各种形式,只要可以转换为整型或字节数组形式即可。

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

  4. 加密的结果可以输出到各种输出流中,本实例将加密结果保存为文件,因此创建文件输出流,将其和前面创建好的密码器一起作为参数传递给CipherOutputStream对象。


评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
资料加载中...
已关注 , 取消