C# SHA256 Хеширование - PullRequest
       6

C# SHA256 Хеширование

0 голосов
/ 01 февраля 2020

Ниже приведен код, который я использую для хеширования, и я пытаюсь сохранить ха sh в строке (strSHA256) с кодировкой UTF-8.

using (SHA256 sha256Hash = SHA256.Create())
{
   bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(utf8EncodedString));
   strSHA256 = Encoding.UTF8.GetString(bytes);               
}

Когда я проверяю строковую переменную I смотрите тип значения "�u��Ou \ u0004����O��zA� \ u0002�� \ 0� \ a�} \ u0012�L�Dr�". Мой вопрос касается ? символа, выделенного жирным шрифтом. Это должны быть символы UTF-8. Почему я не могу просмотреть специальные символы UTF-8, когда осматриваю визуальную студию? Строка o / p также содержит этот странный символ.

Примечание: я пробовал SHA256 с Node Js, и я склонен видеть совершенные специальные символы UTF-8.

1 Ответ

0 голосов
/ 01 февраля 2020

Поскольку @ user2864740, упомянутые байты не являются UTF8. Используйте base64 для представления байтов строки.

       var hello = "Hello world!";
        using (var sha256Hash = SHA256.Create())
        {
            var bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(hello));

            // String representation
            var stringForBytes  = Convert.ToBase64String(bytes);

            // HEX string representation
            var str = new StringBuilder(bytes.Length * 2);
            foreach (var b in bytes)
            {
                str.Append(b.ToString("X2"));
            }

            var hexString = str.ToString();
        }
...