使用 Xamarin 进行 Sha512 哈希处理

Sha512 Hashing with Xamarin

请考虑以下代码:

   SHA512 shaM = new SHA512Managed();
   byte[] data = shaM.ComputeHash(Encoding.UTF8.GetBytes("password"));

   StringBuilder sBuilder = new StringBuilder();

   for (int i = 0; i < data.Length; i++)
   {
        sBuilder.Append(data[i].ToString("x2"));
   }

   string stringyHash = sBuilder.ToString();

我正在使用上述方法为使用 Xamarin 的 android 设备生成 SHA512 哈希密码。但是,当我输出 stringyHash 时,我得到的哈希值与我在使用在线哈希服务时所期望的完全不同,例如: http://www.convertstring.com/Hash/SHA512

在线工具和我的 Xamarin 实现之间对字符串 "password" 进行哈希处理的区别如下:

赛马林:

cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e

在线工具:

B109F3BBBC244EB82441917ED06D618B9008DD09B3BEFD1B5E07394C706A8BB980B1D7785E5976EC049B46DF5F1326AF5A2EA6D103FD07C95385FFAB0CACBC86

我对 Xamarin 比较陌生,对散列作为概念没有什么经验,所以如果有人能解释为什么两者不同,以及如何调整我的代码以确保我生成 正确哈希值,将不胜感激。

cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e

是零长度字符串的 SHA-512 散列:

byte[] data = shaM.ComputeHash(Encoding.UTF8.GetBytes(""));

因此,无论您向 Xamarin 方法中输入什么,都存在问题。