使用SHA256键

时间:2016-04-29 09:04:18

标签: c# hash sha256

我无法得到正确的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 );
    }

这就是我所做的,但它给了我错误的结果。

1 个答案:

答案 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); } 而网站不会(因此将其包含在哈希中)

Your Result

Their Result