C#(windows应用程序8.1)HMAC SHA256与其他语言不同(太短?)

C#(windows应用程序8.1)HMAC SHA256与其他语言不同(太短?),c#,windows-phone-8,win-universal-app,C#,Windows Phone 8,Win Universal App,我有一个在Ruby和Objective-C中使用HMAC SHA256生成校验和的方法,我正在尝试将它移植到C。C#实现似乎正在创建一个过短的哈希字符串:Ruby版本: message = "POSThttp://api.somewhere.com/eventsmy_data1423778684" key = "ABC123" checksum = Digest::HMAC.hexdigest(message, key, Digest::SHA256) 给出“83F47BCD1C0C73606

我有一个在Ruby和Objective-C中使用HMAC SHA256生成校验和的方法,我正在尝试将它移植到C。C#实现似乎正在创建一个过短的哈希字符串:Ruby版本:

message = "POSThttp://api.somewhere.com/eventsmy_data1423778684"
key = "ABC123"
checksum = Digest::HMAC.hexdigest(message, key, Digest::SHA256)
给出“83F47BCD1C0C7360614BB8A858786EB588BE3494F1E9BF8A1769BD5F6FFF0A3B8”

而C版本

对于同一密钥/消息,返回“g/R7zRDHNgYUu4qFh4brWIvjSU8em/ihdpvV9v/wo7g=”

此网站还返回与非C#实现相同的哈希字符串。

您的C#代码按照您的意愿工作,只是返回了HMAC的base64编码版本

将回油管改为

return CryptographicBuffer.EncodeToHexString(signedMessage);
它应该会回报你所期望的

return CryptographicBuffer.EncodeToHexString(signedMessage);