HMAC sha256 在 c# 中返回与 python 不同的值
HMAC sha256 returning different values in c# than python
我需要将一些 python 代码移植到 c# 中,但我在使用这一行时遇到了一些问题:
Python
hmac.new(key, message,digestmod=hashlib.sha256).digest()
C#
HMACSHA256 hm = new HMACSHA256(key);
byte[] result = hm.ComputeHash(enc.GetBytes(message));
当密钥和消息相同(逐字节检查)时,为什么我在 C# 中得到不同的结果?
如果在将消息转换为字节数组时使用不同的编码,则同一消息可能会得到不同的哈希值。不清楚您使用的是哪种编码,但重点是它们应该匹配。
例如:
hmac.new("mykey", "mymessage",digestmod=hashlib.sha256).digest()
gTM3eMvH4WsjwCGzp4gZNV5a62dEcWw/gjTMPngjJpQ=
在 C# 中,您会根据 'enc' 变量得到不同的结果。
Encoding enc = Encoding.GetEncoding("ASCII");
gTM3eMvH4WsjwCGzp4gZNV5a62dEcWw/gjTMPngjJpQ=
Encoding enc = Encoding.GetEncoding("Unicode");
2wqHPyE5oiI3ukxOaKo9ao6AN8fcwjgdDInBHTXTwGQ=
我需要将一些 python 代码移植到 c# 中,但我在使用这一行时遇到了一些问题:
Python
hmac.new(key, message,digestmod=hashlib.sha256).digest()
C#
HMACSHA256 hm = new HMACSHA256(key);
byte[] result = hm.ComputeHash(enc.GetBytes(message));
当密钥和消息相同(逐字节检查)时,为什么我在 C# 中得到不同的结果?
如果在将消息转换为字节数组时使用不同的编码,则同一消息可能会得到不同的哈希值。不清楚您使用的是哪种编码,但重点是它们应该匹配。
例如:
hmac.new("mykey", "mymessage",digestmod=hashlib.sha256).digest()
gTM3eMvH4WsjwCGzp4gZNV5a62dEcWw/gjTMPngjJpQ=
在 C# 中,您会根据 'enc' 变量得到不同的结果。
Encoding enc = Encoding.GetEncoding("ASCII");
gTM3eMvH4WsjwCGzp4gZNV5a62dEcWw/gjTMPngjJpQ=
Encoding enc = Encoding.GetEncoding("Unicode");
2wqHPyE5oiI3ukxOaKo9ao6AN8fcwjgdDInBHTXTwGQ=