SHA512 Compute Hash返回乱码

Fra*_*ayt 1 c# hash ascii sha512

我正在尝试编写一个函数来计算字符串和salt的哈希值,但它会继续返回看起来像某些编码值的东西,这是完全不可读的.

这是我的方法:

public string HashAndSaltString(string stringtohash, string salt)
{
    byte[] data = System.Text.Encoding.ASCII.GetBytes(stringtohash + salt);
    System.Security.Cryptography.SHA512 hashed = new System.Security.Cryptography.SHA512Managed();
    byte[] result = hashed.ComputeHash(data);
    string final = System.Text.Encoding.ASCII.GetString(result);
    return final;
}
Run Code Online (Sandbox Code Playgroud)

这是它返回的样本:

?mJv?v??a ? ??v??g???s?1t?F?v?6(H????????f.???z??H??(?????
%?O??7J??p4??s=`??&p?u?6?????FX!&????????'???!|?"b??c??
?\w[??2ZB????}??_???P?&^??`r???pw?'???0a???#?!Df??????S+
Run Code Online (Sandbox Code Playgroud)

我认为这事做与GetBytesGetString方法的部分,它编码为ASCII?

一些帮助将非常感激.

Aut*_*h0x 9

散列函数通常将其输入处理为固定长度的字节块,这不是人类可读的.

将此字节数组转换为char序列的常用方法是将base64应用于它.

在C#中你可以做到:

string final = Convert.ToBase64String(result);
Run Code Online (Sandbox Code Playgroud)

得到一个字符串,并:

byte[]backToByteArray = Convert.FromBase64String(final);
Run Code Online (Sandbox Code Playgroud)

获取一个字节数组.