HashAlgorithm.TransformBlock
采用参数 outputBuffer
和 outputOffset
。
我想不出这个方法有这些的理由。将散列数据复制到某个地方是否如此常见,以至于该复制成为此方法的一个组成部分?
我很好奇看到涉及这些输出参数的良好用例。
这显然是一个疏忽。 我找不到支持这一点的来源,但由于它代表了我们可以想象的任何用例(我无法想象任何实际用例),最多可以为开发人员节省一行代码。 更糟糕的是,任何(无论出于何种原因)确实想要制作自己的缓冲区副本的开发人员可能会发现TransformBlock
不太可能为她做这件事,以至于她可能会自己编写该行代码!
outputBuffer
被其他
ICryptoTransforms
以合理的方式使用(例如,作为输出缓冲区),所以它确实应该包含 - 当不为空并且不覆盖输入缓冲区时 - 中间摘要,特别是因为它不是其他情况可以从课堂上获得。 (每当算法的输入出现在多个上下文中时,使中间摘要可用是一个好主意。) 我的猜测是:
关于何时应该抛出 IOException,有人在
inputBuffer
而不是this.HashValue
复制。中间摘要很少使用,以至于在