5

次のHMACキー(16進形式)を取得しました。

52320e181a481f5e19507a75b3cae4d74d5cfbc328f7f2b738e9fb06b2e05b55b632c1c3d331dcf3baacae8d3000594f839d770f2080910b52b7b8beb3458c08

この文字列に署名する必要があります:

1100002842850CHF91827364

結果は次のようになります(16進形式)。

2ad2f79111afd818c1dc0916d824b0a1

私は次のコードを持っています:

string key = "52320e181a481f5e19507a75b3cae4d74d5cfbc328f7f2b738e9fb06b2e05b55b632c1c3d331dcf3baacae8d3000594f839d770f2080910b52b7b8beb3458c08";
string payload = "1100002842850CHF91827364";

byte[] keyInBytes = Encoding.UTF8.GetBytes(key);
byte[] payloadInBytes = Encoding.UTF8.GetBytes(payload);

var md5 = new HMACMD5(keyInBytes);
byte[] hash = md5.ComputeHash(payloadInBytes);

var result = BitConverter.ToString(hash).Replace("-", string.Empty);

しかし、私は結果を得ていません。私は何が間違っているのですか?

4

2 に答える 2

12

キー HMAC md5 でハッシュする場合

        var data = Encoding.UTF8.GetBytes(plaintext);
        // key
        var key = Encoding.UTF8.GetBytes(transactionKey);

        // Create HMAC-MD5 Algorithm;
        var hmac = new HMACMD5(key);

        // Compute hash.
        var hashBytes = hmac.ComputeHash(data);

        // Convert to HEX string.
        return System.BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
于 2016-06-28T04:10:58.987 に答える
4

これを行う代わりに:

byte[] keyInBytes = Encoding.UTF8.GetBytes(key);

キーを16進文字列からバイト配列に変換する必要があります。ここで例を見つけることができます:

バイト配列を 16 進文字列に、またはその逆に変換するにはどうすればよいですか?

于 2012-09-14T04:25:13.403 に答える