2016-04-29 25 views
0

正しいハッシュを取得できません。私は本当に何が間違っているのか分かりません。 私が得るすべてのハッシュは、このサイト上として正しくありませんでした: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

関連する問題