system.security.cryptography.sha1 是否使用 OpenSSL 库的 SHA1 算法实现?

发布于 2024-09-25 14:14:59 字数 105 浏览 3 评论 0原文

或者是微软自定义实现的算法?我测试了在 Mac 上使用 OpenSSL 计算的 SHA1 相当于使用 system.security.cryptography.sha1 在 C# 中计算的哈希值。

or is the algorithm custom implemented by Microsoft? i tested that SHA1 computed using OpenSSL on mac is equivalent to the hash computed in C# using system.security.cryptography.sha1.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜味拾荒者 2024-10-02 14:14:59

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

因此,.NET Framework 附带的实现都没有在内部使用 OpenSSL。

Mono 为这些类提供了不同的实现。他们都使用 与用纯 C# 编写的相同实现

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

System.Security.Cryptography.SHA1 is an abstract class. It has three implementations:

So, no, none of the implementations that ship with the .NET Framework use OpenSSL internally.

Mono ships with different implementations for these classes. They all use the same implementation which is written in pure C#.

The reason why you're getting the same result is that the SHA1 algorithm is deterministic, i.e. it always produces exactly the same result for the same input.

缪败 2024-10-02 14:14:59

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

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

Microsoft almost certainly have their own implementation.

SHA-1 is a (deterministic) hash function, so you ought to get the same results with two distinct implementations if you apply it to the same input data. If you don't, it doesn't just mean the two implementations are distinct, it also means that one or both of them contain errors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文