按单部分操作加密或解密数据,或者结束一个多部分操作。数据将被加密或解密(具体取决于此 cipher 的初始化方式)。
处理从 input.position()
开始的所有 input.remaining()
个字节。结果将存储在输出缓冲区中。返回时,输入缓冲区的位置将等于其限制;其限制不变。输出缓冲区的位置将前移 n,其中 n 为此方法返回的值;输出缓冲区的限制不变。
如果 output.remaining()
个字节还不够保存该结果,则抛出 shortbufferexception
。这种情况下,使用一个稍大的缓冲区再次调用。使用 getoutputsize
确定输出缓冲区应为多大。
结束时,此方法将此 cipher 对象重置为上一次调用 init
初始化得到的状态。即该对象被重置,并可用于加密或解密(具体取决于调用 init
时指定的操作模式)更多的数据。
注:如果抛出了任何异常,则再次使用此 cipher 对象前需要将其重置。
注:此方法应该是复制安全的,这意味着 input
和 output
缓冲区可引用相同的
iis7站长之家 数组,并且在将结果复制到输出缓冲区时,不会覆盖任何未处理的输入数据。
- 参数:
input
- 输入 bytebufferoutput
- 输出 bytebuffer
- 返回:
output
中存储的字节数
- 抛出:
illegalstateexception
- 如果此 cipher 处于错误状态(例如,尚未初始化)
illegalargumentexception
- 如果输入和输出为相同的对象
readonlybufferexception
- 如果输出缓冲区为只读
illegalblocksizeexception
- 如果此 cipher 为 cipher 块,未请求任何填充(只针对加密模式),并且由此 cipher 处理的数据总输入长度不是块大小的倍数;如果此加密算法无法处理所提供的输入数据。
shortbufferexception
- 如果输出缓冲区没有足够的空间
badpaddingexception
- 如果 cipher 为解密模式,并且未请求填充(或不填充),但解密的数据没有用适当的填充字节进行限制- 从以下版本开始:
- 1.5