gpt4 book ai didi

rust - 在RUST中将哈希器置于脏状态意味着什么

转载 作者:行者123 更新时间:2023-12-03 11:41:28 25 4
gpt4 key购买 nike

我一直在尝试了解RUST中的SHA256实现。特别是,我遇到了digest::FixedOutputDirty特征,它根据documentation“不鼓励在用户代码中使用此特征。而应使用FixedOutput::finalize_fixedFixedOutput::finalize_fixed_reset方法”。这是为什么?同样,除非在调用finalize_into_dirty之后再调用Reset::reset等,否则应重复调用同一文档中所说的finalize_into_dirty方法,以此类推...为什么要在每次调用Reset::reset之后再调用finalize_into_dirty。换句话说,如果不调用Reset::reset而我们连续多次调用finalize_into_dirty会发生什么?
编辑1:根据文档finalize_fixed_reset检索哈希结果并重置哈希器实例,而finalize_fixed检索结果并使用哈希器实例。

最佳答案

在Rust中,这实际上并不意味着任何东西。这对于摘要 crate 意味着某些事情:finalize_into_dirty最终确定了哈希(如果需要),然后返回结果,但内部缓冲区处于最终确定的状态。这意味着您可以继续将新数据添加到哈希中,但是这很可能是无稽之谈。
我不能告诉你为什么digest人们认为这是一个有用的概念,所以你不得不问他们。可以想象它是对哈希的一种优化,其中终结步骤是无操作的,您可以在“检查点”处要求哈希值,然后继续哈希。
编辑:Issue 180,它与一个优化有关:显然,以前的实现即使在摘要被消耗掉的情况下,也不得不对内部缓冲区进行reset()编码(这样就无法重用,并且重置是浪费时间)。因此,这是一个“幕后”实现细节,您真的不应该担心它。

关于rust - 在RUST中将哈希器置于脏状态意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65956854/

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