gpt4 book ai didi

c# - CNG、CryptoServiceProvider 和 HashAlgorithm 的托管实现

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

所以我想知道哈希算法的各种实现之间是否存在重大差异,以SHA系列算法为例。它们每个都有 3 个实现,1 个在托管代码中,2 个围绕不同的 native 加密 API 进行包装,但是使用它们之间有什么主要区别吗?我可以想象包装器版本可以具有更高的性能,因为它是在 native 代码中执行的,但是 surley 嘿,他们都需要执行完全相同的计算,从而提供相同的输出,即他们是可互换的。这是正确的吗?

例如 SHA512CNG 不能在 XP SP2 上使用(文档是错误的)但是 SHA512MANAGED 可以。


@Maxim - 谢谢,但不是我想要的。我问的是,除了可能的性能之外,使用给定哈希算法的 Managed/CryptoServiceProvider/CNG 实现是否有任何区别。在 .NET 3.5 中,您可以获得所有具有三种实现的哈希算法,因此

SHA512 托管SHA512加密服务提供商SHA512Cng

后两者是原生 API 的包装器。例如,所有 SHAxxx 实现都是如此。

最佳答案

一个区别是 native 版本(至少其中一些)是 FIPS 认证的(即,由美国政府批准),而托管版本则不是。如果您的代码恰好在配置为“仅 FIPS”的 Windows 计算机上运行,​​则尝试使用托管版本将失败。

大多数 Windows 机器没有以这种方式配置,但如果您要部署到面向政府或国防(或其他高度安全)的环境,您可能会遇到这种情况。

参见 http://blogs.msdn.com/shawnfa/archive/2005/05/16/417975.aspx .

关于c# - CNG、CryptoServiceProvider 和 HashAlgorithm 的托管实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/211169/

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