我无法得到正确的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 );
}
这就是我所做的,但它给了我错误的结果。
答案 0 :(得分:3)
当您将字符串放入您链接的网站上的"
文本框中时,您必须删除字符串的c#转义字符(在这种情况下,将\"
替换为"
)然后你得到相同的结果 - 你的代码可以工作。
这是因为C#会将 data-action="selectYear" class="year active"
视为转义.bootstrap-datetimepicker-widget table td span.active {
background-color: #337ab7;
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
而网站不会(因此将其包含在哈希中)