Hashing text with SHA-256 at Windows Forms

2019-05-28 17:55发布

String inputPass = textBox2.Text;
byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(inputPass);
byte[] inputHashedBytes = Sha256.ComputeHash(inputBytes);
String inputHash = Convert.ToBase64String(inputHashedBytes);

I'm getting some strange output:

Q9nXCEhAn7RkIOVgBbBeOd5LiH7FWFtDFJ22TMLSoH8=

By output hash looks like this:

43d9d70828409fb46420e56005b05e38de4b887ec5585b43149db64cc2d2a07f

2条回答
太酷不给撩
2楼-- · 2019-05-28 18:26

Encoding.UTF8.GetString parses bytes as UTF8 codepoints.

The SHA256 hash is an arbitrary 256-bit number and does not correspond to any Unicode text.

You probably want to show the binary value in hexadecimal, by calling BitConverter.ToString().
You can also call Convert.ToBase64String().

查看更多
贪生不怕死
3楼-- · 2019-05-28 18:33
// this is where you get the actual binary hash
byte[] inputHashedBytes = Sha256.ComputeHash(inputBytes);

// but you want it in a string format, similar to a variety of UNIX tools
string result = BitConverter.ToString(inputHashedBytes)
   // this will remove all the dashes in between each two characters
   .Replace("-", string.Empty)
   // and make it lowercase
   .ToLower();
查看更多
登录 后发表回答