C#(windows应用程序8.1)HMAC SHA256与其他语言不同(太短?)
我有一个在Ruby和Objective-C中使用HMAC SHA256生成校验和的方法,我正在尝试将它移植到C。C#实现似乎正在创建一个过短的哈希字符串:Ruby版本: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
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);