java:DigestInputStream和DigestOutputStream的理解

1. DigestInputStream 最大的特点是在读取的数据的时候已经调用MessageDigest实例的update方法,当数据从底层的数据流中读取之后就只可以直接调用MessageDigest实例的digest()方法了,从而完成对输入数据的摘要加密;
如果调用其on(false)方法,那么在读取数据的过程中便不会讲数据传给update方法,那么此时它跟普通的输入流就没有任何区别了。
2. DigestOutputStream 最大的特点是在向底层的输出流写入数据的时候已经调用MessageDigest实例的update方法,并作为MessageDigest的输入数据,之后就可以直接调用MessageDigest实例的digest()方法完成加密过程;
同样的,是否对数据加密也是由该流的on(boolean b)方法进行控制的,如果设置成false,那么在写出数据的过程中便不会将数据传给update方法,那么此时它跟普通的输出流就没有任何区别了。
 
注:CipherInputStream和CipherOutputStream与此类似,只是后者更为彻底,它们不用在显示地调用传入的Cipher对象的update和doFinal方法,加密或解密过程在读写数据的同时已经隐式地完成了。

你可能感兴趣的:(理解)