0

私は md5 ハッシュを取得しようとしています:

        String clearKey = "test";
        IBuffer buffEntry = CryptographicBuffer.ConvertStringToBinary(clearKey, BinaryStringEncoding.Utf8);
        HashAlgorithmProvider algProvider = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Md5);

        IBuffer buffHashed = algProvider.HashData(buffEntry);

        byte[] bytesKey;
        CryptographicBuffer.CopyToByteArray(buffHashed, out bytesKey);
        Debug.WriteLine(String.Format("bytesKey lenght : {0}", bytesKey.Length));

結果のサイズが 16 バイトになるのはなぜですか? 従来の 32 バイトの結果を取得するには?

ご協力ありがとうございました、

4

1 に答える 1

3

MD5 の出力は 128 ビットまたは 16 バイトです。したがって、32 バイトを期待するのは間違っています。32 バイトとは、16 進数でエンコードされた文字列を意味し、各バイトが 2 文字にマップされ、32 文字の文字列になると想定しています。

地下鉄でできます CryptographicBuffer.EncodeToHexString。バイトを 16 進文字列に変換します。

あなたの場合、これは次のようになります。

string md5Hex = CryptographicBuffer.EncodeToHexStringbuffHashed(buffEntry);
于 2012-09-13T13:05:32.833 に答える