3.3.7 CipherOutputStream

CipherOutputStream类与CipherInputStream类相似,称为密钥输出流。


//提供密钥输出流

public class CipherOutputStream

extends FilterOutputStream


❑方法详述

可通过如下构造方法构造实例化对象:


//通过OutputStream和Cipher构造CipherOutputStream对象。

public CipherOutputStream(OutputStream os, Cipher c)


CipherOutputStream类覆盖了FilterOutputStream类的以下方法。

写操作很简单,与一般FilterOutputStream类的子类差别不大,方法如下所示:


//从指定的字节数组中将b.length个字节写入此输出流。

public void write(byte[]b)

//将指定的字节数组中从off偏移量开始的len个字节写入此输出流。

public void write(byte[]b, int off, int len)

//将指定的字节写入此输出流。

public void write(int b)


完成操作后,一定要对输出流做清空和关闭操作,方法如下所示:


//强制写出已由封装的密码对象处理的任何缓存输出字节来刷新此输出流。

public void flush()

//关闭此输出流并释放任何与此流关联的系统资源。

public void close()


❑实现示例

接上3.3.6节内容,我们通过如下代码清单3-19完成文件数据的加密。

代码清单3-19 密钥输出流加密操作


//初始化Cipher对象,用于加密操作。

cipher.init(Cipher.ENCRYPT_MODE, secretKey);

//待加密的原始数据。

String input="1234567890";

//实例化CipherOutputStream对象。

CipherOutputStream cos=new CipherOutputStream(new FileOutputStream(new

File("secret")),cipher);

//使用DataOuputStream对象包装CipherOutputStream对象。

DataOutputStream dos=new DataOutputStream(cos);

//向输出流写待加密的数据。

dos.writeUTF(input);

//清空流

dos.flush();

//关闭流

dos.close();