gpt4 book ai didi

c# - 什么时候应该使用 SHA-1,什么时候应该使用 SHA-2?

转载 作者:IT王子 更新时间:2023-10-29 04:25:39 29 4
gpt4 key购买 nike

在我的 C# 应用程序中,我使用 RSA 对文件进行签名,然后再由上传者上传到我公司的数据库中,在这里我必须选择 SHA-1 或 SHA-2 来计算哈希值。< br/>与编程中的任何其他组件一样,我知道必须有一个“在这里使用这个”和“在那里使用那个”的两者。
那么,什么时候?什么时候?

编辑:
我的问题是:性能有什么区别?而不是关于安全性,因为我已经知道 SHA-2 比 SHA-1 更可靠。
在这个Link不同类型的 SHA-2 之间的比较,指出何时使用 SHA-512 以及何时不使用。我需要关于 SHA-1 和 SHA-2 的类似论点。

最佳答案

使用 SHA-2。总是。 SHA-1 应保留用于由于遗留代码的互操作性问题而无法使用 SHA-2 的情况。

在执行实际措施之前,不存在性能问题。哈希函数很快。在大多数情况下,哈希函数性能的影响可以忽略不计;即使检测到它也很困难。安全第一。由于在 SHA-1 中发现了弱点,因此使用它仍然需要一些强有力的理由。使用SHA-256不会被质疑;这是“默认选择”。但是,如果您使用 SHA-1,请做好被批评的准备。

请注意,有四种函数称为“SHA-2”:SHA-224、SHA-256、SHA-384 和 SHA-512。 SHA-224 和 SHA-256 是相同的函数,除了内部参数(“初始值”)和输出大小(SHA-224 输出大小为 28 字节,而 SHA-256 提供 32 字节);它们具有相同的性能特征。同样,SHA-384 和 SHA-512 在性能方面具有相同的功能。 SHA-512 使用 64 位算术运算,在提供 64 位操作码的平台上比 SHA-256 更快;在 32 位平台上,SHA-256 会更快(注意:在具有 native 代码的 32 位 x86 上,可以使用 SSE2 操作码及其 64 位计算能力,因此一些 native 在 32 位模式下,SHA-512 的代码实现将比 SHA-256 更快;OpenSSL 代码做到了这一点;但据我所知,.NET 中的 SHA-512 实现是“托管代码”)。此外,所有 SHA-* 函数都具有一些基本粒度,因为它们按 block 处理数据:对于 SHA-256, block 长 64 字节,而 SHA-512 使用 128 字节 block ;在散列非常短的数据元素时,较高的 SHA-512 粒度会相应地降低其性能。最后,SHA-256(在 32 位平台上)可能会产生更小的代码(即在 CPU 上使用更少的 L1 缓存)。

因此,如有疑问,请使用 SHA-256。如果您打算使用 SHA-1,那么您应该怀疑。

如果您想将散列函数用于非加密用途(即弱点对您来说不是问题),那么请考虑 MD4 而不是 SHA-1 .

关于c# - 什么时候应该使用 SHA-1,什么时候应该使用 SHA-2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5001893/

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