Security.Cryptography.HMACSHA256.Create()
和Security.Cryptography.KeyedHashAlgorithm.Create("HmacSHA256")
之间的区别是什么?
答案 0 :(得分:5)
首先,关于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
。
答案 1 :(得分:0)
无。 Security.Cryptography.KeyedHashAlgorithm.Create("HmacSHA256")
(reference source)使用反射来查找Security.Cryptography.HMACSHA256
。