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 个字节,您的意思是一个十六进制编码的字符串,其中每个字节映射到两个字符,从而产生一个 32 个字符的字符串。

在地铁你可以 CryptographicBuffer.EncodeToHexString。将字节转换为十六进制字符串。

在你的情况下,这变成:

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