如何使用`HashAlgorithm.TransformBlock`的输出参数?

Rom*_*kov 15 .net api

该方法HashAlgorithm.TransformBlock采用参数outputBufferoutputOffset.

我想不出这种方法有这些的原因.将散列数据复制到某个地方是否如此常见,以致副本成为此方法不可或缺的一部分?

我很想看到一个涉及这些输出参数的好用例.

lad*_*dge 7

这显然是一种疏忽.我找不到支持这个的来源,但是因为我们可以想象(我无法想象任何实际的用例)任何用例最多可以为开发人员节省一行代码.更糟的是,谁(无论何种原因),并希望取得可能会觉得这样不太可能自己缓冲区的副本,任何开发人员TransformBlock会为她做这一点,她可能会写一行代码自己反正!

outputBuffer其他人ICryptoTransforms以合理的方式使用它(例如作为输出缓冲区),因此它实际上应该包含 - 当不为空并且不覆盖输入缓冲区时 - 中间摘要,特别是因为它不能从类中获得.(只要算法的输入出现在多个上下文中,使中间摘要可用是一个不错的主意.)

我的猜测是:

  1. 有人在抛出IOException时会在1.1中得到它.
  2. 2.0中,有人"修复"了这个问题,但误读了规范并从中复制inputBuffer而不是this.HashValue.
  3. 很少使用中间摘要,没有人在4.0之前抱怨过.

  • 哦,对.这是因为它实现了一个`ICryptoTransform`方法,该方法适用于产生输出的东西.我应该注意到...... (2认同)