或者是微软定制的算法?我测试了在mac上使用OpenSSL计算的SHA1等效于使用system.security.cryptography.sha1在C#中计算的哈希。
答案 0 :(得分:4)
System.Security.Cryptography.SHA1是一个抽象类。它有三个实现:
所以,不,.NET Framework附带的任何实现都没有在内部使用OpenSSL。
Mono附带了这些类的不同实现。它们全都使用{C}编写的the same implementation。
你得到相同结果的原因是SHA1算法是确定性的,即它总是为同一输入产生完全相同的结果。
答案 1 :(得分:2)
微软几乎肯定有自己的实现。
SHA-1是一个(确定性的)散列函数,因此如果将其应用于相同的输入数据,则应该使用两个不同的实现获得相同的结果。如果不这样做,这并不仅仅意味着两个实现是不同的,它还意味着其中一个是错误的。