如何使用C#为我的WinRT应用程序生成MD5哈希码?
我正在创建MetroStyle应用程序,我想为我的字符串生成MD5代码。 到目前为止我用过这个:
public static string ComputeMD5(string str) { try { var alg = HashAlgorithmProvider.OpenAlgorithm("MD5"); IBuffer buff = CryptographicBuffer.ConvertStringToBinary(str, BinaryStringEncoding.Utf8); var hashed = alg.HashData(buff); var res = CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8, hashed); return res; } catch (Exception ex) { return null; } }
但它抛出System.ArgumentOutOfRangeException
类型的exception,并显示以下错误消息:
No mapping for the Unicode character exists in the target multi-byte code page. (Exception from HRESULT: 0x80070459)
我在这做错了什么?
好。 我发现了如何做到这一点。 这是最终的代码:
public static string ComputeMD5(string str) { var alg = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Md5); IBuffer buff = CryptographicBuffer.ConvertStringToBinary(str, BinaryStringEncoding.Utf8); var hashed = alg.HashData(buff); var res = CryptographicBuffer.EncodeToHexString(hashed); return res; }