有没有办法在Java中加密和解密输入和输出流?谢谢
2 回答
看看 CipherInputStream 和 CipherOutputStream。
CipherInputStream由 InputStream 和Cipher组成,因此 read() 方法返回从底层 InputStream 读取但已由 Cipher 额外处理的数据。Cipher 在被 CipherInputStream 使用之前必须完全初始化。
例如,如果 Cipher 被初始化以进行解密,则 CipherInputStream 将尝试读取数据并对其进行解密,然后再返回解密的数据。
此类严格遵守其祖先类 java.io.FilterInputStream 和 java.io.InputStream 的语义,尤其是失败语义。此类具有在其祖先类中指定的那些方法,并覆盖它们。此外,此类捕获其祖先类未引发的所有异常。特别是skip方法跳过,可用方法只统计封装Cipher处理过的数据。
对于使用此类的程序员来说,不要使用未在此类中定义或覆盖的方法(例如后来添加到超类之一的新方法或构造函数),因为这些方法的设计和实现不太可能考虑对 CipherInputStream 的安全影响。
CipherOutputStream由 OutputStream 和Cipher组成,因此 write() 方法首先处理数据,然后再将其写入底层 OutputStream。密码必须在被 CipherOutputStream 使用之前完全初始化。
例如,如果密码被初始化为加密,CipherOutputStream 将在写出加密数据之前尝试加密数据。
此类严格遵守其祖先类 java.io.OutputStream 和 java.io.FilterOutputStream 的语义,尤其是失败语义。此类具有在其祖先类中指定的那些方法,并覆盖它们。此外,此类捕获其祖先类未引发的所有异常。
对于使用此类的程序员来说,不要使用未在此类中定义或覆盖的方法(例如后来添加到超类之一的新方法或构造函数),因为这些方法的设计和实现不太可能考虑对 CipherOutputStream 的安全影响。
您可以使用CipherOutputStream和CipherInputStream来加密或解密 Input/OutputStreams