gpt4 book ai didi

c# - .NET 的 HMAC 和 HMAC KeyedHashAlgorithm 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 14:52:09 26 4
gpt4 key购买 nike

Security.Cryptography.HMACSHA256.Create()Security.Cryptography.KeyedHashAlgorithm.Create("HmacSHA256") 有什么区别?

最佳答案

首先,关于Security.Cryptography.HMACSHA256.Create() --

Create 方法是HMAC 类的方法,HMACSHA256 派生自该类。简而言之:

public class HMACSHA256 : HMAC {
...
}

其中 HMAC 定义为:

public abstract class HMAC : KeyedHashAlgorithm {
new static public HMAC Create () {
return Create("System.Security.Cryptography.HMAC");
}

new static public HMAC Create (string algorithmName) {
return (HMAC) CryptoConfig.CreateFromName(algorithmName);
}
...
}

其次,关于Security.Cryptography.KeyedHashAlgorithm.Create("HmacSHA256")

public abstract class KeyedHashAlgorithm : HashAlgorithm { 
new static public KeyedHashAlgorithm Create(String algName) {
return (KeyedHashAlgorithm) CryptoConfig.CreateFromName(algName);
}
...
}

如您所见,这两个调用都会调用 CryptoConfig.CreateFromName 方法,但使用不同的参数值,即第一种情况下的 System.Security.Cryptography.HMAC , 和 HmacSHA256 在第二种情况下。在内部,CryptoConfig.CreateFromName里面有一些表和反射逻辑方法。

第一次调用的结果是SHA1哈希,第二次调用的结果是SHA256

关于c# - .NET 的 HMAC 和 HMAC KeyedHashAlgorithm 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32406283/

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