在 System.Security.Cryptography 中,我们可以看到有许多类,有些类还很相似,比如:
- System.Security.Cryptography.SHA1
- System.Security.Cryptography.SHA1Managed
- System.Security.Cryptography.SHA1CryptoServiceProvider
这三个类有什么关系呢?
SHA1 是抽象类,SHA1Managed 和 SHA1CryptoServiceProvider 继承于 SHA1。
SHA1Managed 和 SHA1CryptoServiceProvider 有什么区别呢?
SHA1Managed 被写入了托管 .NET 语言(比如:C#、VB.NET);而 SHA1CryptoServiceProvider 是基于 Windows Crypto API 的,也就是说它是依赖于 Windows 中某个 DLL 的。据说后者性能要高些。
其他以 Managed 和 Provider 结尾的类也是上述道理。