2016-04-29 121 views
0

我無法獲得正確的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); 
    } 

這就是我所做的,但它給了我錯誤的結果。

+1

很顯然,你是新來的StackOverflow,但你能發佈更多可接受的代碼嗎?什麼是'ShaKey'?那些其他線路如何不在功能中?只是發佈整個事情 – afaolek

+0

此外文本/密碼不是一個合適的密鑰。使用由16到32個隨機字節組成的密鑰或使用基於密碼的KDF從密碼中派生出來。 (只要有可能,我推薦使用隨機密碼來代替密碼) – CodesInChaos

+0

整個事情要大得多。 –

回答

2

當你把你的串入Text you want to convert to a SHA-256 hash:文本框,你鏈接的網站上,你必須刪除C#轉義字符爲您的字符串(在這種情況下替換\""),那麼你得到同樣的結果 - 你的代碼工作。

這是因爲C#將會看到\"作爲逃脫"和網站不會(因此包括它在散)

Your Result

Their Result