在Java中使用/解密输入/输出流?

时间:2012-12-19 20:49:34

标签: java security encryption stream

有没有办法在Java中加密和解密输入和输出流? 感谢

2 个答案:

答案 0 :(得分:11)

查看CipherInputStream和CipherOutputStream。

  

CipherInputStream 由InputStream和Cipher组成,因此read()方法返回从底层InputStream读入但已由Cipher另外处理的数据。在被CipherInputStream使用之前,必须完全初始化密码。

     

例如,如果Cipher初始化为解密,则CipherInputStream将在返回解密数据之前尝试读入数据并对其进行解密。

     

该类严格遵守其祖先类java.io.FilterInputStream和java.io.InputStream的语义,尤其是失败语义。该类具有其祖先类中指定的那些方法,并将它们全部覆盖。此外,此类捕获其祖先类未抛出的所有异常。特别是,skip方法跳过,可用方法仅计算已封装密码处理的数据。

     

对于使用此类的程序员来说,不要使用未在此类中定义或覆盖的方法(例如稍后添加到其中一个超类中的新方法或构造函数),这一点至关重要,因为设计和实现这些方法不太可能考虑到CipherInputStream的安全影响。


  

CipherOutputStream 由OutputStream和Cipher组成,因此write()方法在将数据写入底层OutputStream之前首先处理数据。在被CipherOutputStream使用之前,密码必须完全初始化。

     

例如,如果密码初始化为加密,则CipherOutputStream将在写出加密数据之前尝试加密数据。

     

该类严格遵守其祖先类java.io.OutputStream和java.io.FilterOutputStream的语义,尤其是失败语义。该类具有其祖先类中指定的那些方法,并将它们全部覆盖。此外,此类捕获其祖先类未抛出的所有异常。

     

对于使用此类的程序员来说,不要使用未在此类中定义或覆盖的方法(例如稍后添加到其中一个超类中的新方法或构造函数),这一点至关重要,因为设计和实现这些方法不太可能考虑到CipherOutputStream的安全影响。

答案 1 :(得分:2)

您可以使用CipherOutputStreamCipherInputStream加密或解密Input / OutputStreams