使用 SHA256 密钥的哈希字符串
Hash string with SHA256 key
我无法获得正确的 HASH,我真的不知道它有什么问题。
我得到的所有哈希值都不正确,因为在这个网站上:http://hash.online-convert.com/sha256-generator
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# 会将 \"
视为转义的 "
而站点不会(因此将其包含在哈希中)
我无法获得正确的 HASH,我真的不知道它有什么问题。 我得到的所有哈希值都不正确,因为在这个网站上:http://hash.online-convert.com/sha256-generator
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# 会将 \"
视为转义的 "
而站点不会(因此将其包含在哈希中)