使用SHA256密钥的哈希字符串
问题描述:
我无法获得正确的HASH。我真的不知道它有什么问题。 所有哈希我得到是不正确的在该网站:http://hash.online-convert.com/sha256-generator使用SHA256密钥的哈希字符串
public NavigatedPage()
{
string bytes = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><Command> <LMI_PAYMENT_NO>1000</LMI_PAYMENT_NO><LMI_MERCHANT_ID>2096</LMI_MERCHANT_ID> <LMI_HASH></LMI_HASH> <LMI_PAYMENT_SYSTEM>18</LMI_PAYMENT_SYSTEM> <LMI_PAYMENT_AMOUNT>1001</LMI_PAYMENT_AMOUNT> <LMI_PAYMENT_DESC>Оплата договора</LMI_PAYMENT_DESC></Command>";
string key = "14653285";
string message = bytes;//xml document in a string
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] keyByte = encoding.GetBytes(key);
HMACSHA256 hmacsha256 = new HMACSHA256(keyByte);
byte[] messageBytes = encoding.GetBytes(message);
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
var tempHash = ByteToString(hashmessage);
}
public static string ByteToString(byte[] buff)
{
string sbinary = "";
for (int i = 0; i < buff.Length; i++)
{
sbinary += buff[ i ].ToString("X2"); // hex format
}
return (sbinary);
}
这就是我所做的,但它给了我错误的结果。
答
当你把你的串入Text you want to convert to a SHA-256 hash:
文本框,你链接的网站上,你必须删除C#转义字符为您的字符串(在这种情况下替换\"
与"
),那么你得到同样的结果 - 你的代码工作。
这是因为C#将会看到\"
作为逃脱"
和网站不会(因此包括它在散)
很显然,你是新来的*,但你能发布更多可接受的代码吗?什么是'ShaKey'?那些其他线路如何不在功能中?只是发布整个事情 – afaolek
此外文本/密码不是一个合适的密钥。使用由16到32个随机字节组成的密钥或使用基于密码的KDF从密码中派生出来。 (只要有可能,我推荐使用随机密码来代替密码) – CodesInChaos
整个事情要大得多。 –