gpt4 book ai didi

c# - 我可以将 null 作为 HashAlgorithm.TransformBlock() 的 "output buffer"参数传递吗?

转载 作者:行者123 更新时间:2023-11-30 16:12:29 25 4
gpt4 key购买 nike

HashAlgorithm.TransformBlock() 具有 outputBuffer 参数,该参数记录为 用于计算哈希码的输入数组部分的副本。 这听起来像是我的数据将被读取,用于更改哈希机制状态并复制到 outputBuffer

我不需要那个副本。看起来我可以改为传递 null,它看起来很有效。

如果我将 null 作为 outputBuffer 传递,是否会出现任何问题?

最佳答案

是的,传递null就可以了。它甚至有这个参数的原因是因为它正在实现 ICryptoTransform界面。在构造 CryptoStream 时可以使用此接口(interface),因为您可能想要构建一组转换。在这种情况下,HashAlgorithm 根本不会更改数据,因此它最终被有趣地定义为只是将输入复制到输出。

ICryptoTransform 的其他实现(例如,任何实际执行加密或解密的东西)当然也会写入重要的输出。

这意味着,在对输入进行单次传递期间,您可以计算哈希同时还执行加密 - 这就是此处支持此接口(interface)的原因。


current implementation完成工作后,只有这个:

 if ((outputBuffer != null) && ((inputBuffer != outputBuffer) ||
(inputOffset != outputOffset)))
Buffer.BlockCopy(inputBuffer, inputOffset,
outputBuffer, outputOffset, inputCount);

关于c# - 我可以将 null 作为 HashAlgorithm.TransformBlock() 的 "output buffer"参数传递吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22954940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com