【问题标题】:Does system.security.cryptography.sha1 use OpenSSL library's implementation of SHA1 algorithm?system.security.cryptography.sha1 是否使用 OpenSSL 库的 SHA1 算法实现?
【发布时间】:2010-09-29 16:38:08
【问题描述】:

还是由 Microsoft 自定义实现的算法?我测试了在 mac 上使用 OpenSSL 计算的 SHA1 等效于在 C# 中使用 system.security.cryptography.sha1 计算的哈希值。

【问题讨论】:

    标签: c# openssl sha1


    【解决方案1】:

    System.Security.Cryptography.SHA1 是一个抽象类。它有三种实现方式:

    所以,不,.NET Framework 附带的所有实现都没有在内部使用 OpenSSL。

    Mono 为这些类提供了不同的实现。他们都使用the same implementation,它是用纯 C# 编写的。

    您得到相同结果的原因是 SHA1 算法是确定性的,即它总是为相同的输入产生完全相同的结果。

    【讨论】:

    • 2021年还是这样吗? Openssl 使用内在函数来提高性能......我想确保我使用的是 openssl 程序集......所以如果 C# 不在后台使用它,我可能会找到或进行绑定......或者只是使用Rust 或 C++..
    【解决方案2】:

    微软几乎肯定有自己的实现。

    SHA-1 是一个(确定性)散列函数,因此如果将其应用于相同的输入数据,则应该通过两种不同的实现获得相同的结果。如果你不这样做,这不仅意味着这两个实现是不同的,还意味着它们之一或两者都包含错误。

    【讨论】:

      猜你喜欢
      • 2017-04-27
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 2021-01-21
      • 2012-06-17
      • 1970-01-01
      相关资源
      最近更新 更多