Как я могу преобразовать этот HashSHA256 ((""). Encode ("utf-8")). HexDigest () в C#? - PullRequest
0 голосов
/ 03 апреля 2020

Следующий псевдокод получен из документации AWS (раздел: Задача 1, шаг 7) :

payload_hash = HashSHA256(("").Encode("utf-8")).HexDigest()

Он используется для расчета полезной нагрузки GET -request.

Для удобства этот псевдокод можно переписать следующим образом:

utf8Bytes = ("").Encode("utf-8")
sha256Hash = HashSHA256(utf8Bytes)
payload_hash = sha256Hash.HexDigest()

Как преобразовать этот псевдокод в C#?

1 Ответ

1 голос
/ 03 апреля 2020

Следующий пример равен C# эквиваленту предоставленного вами псевдокода:

using System;
using System.Security.Cryptography;
using System.Text;

...

public static void Demo()
{
    using (SHA256 sha256 = SHA256.Create())
    {
        string textToHash = "";
        byte[] bytesToHash = Encoding.UTF8.GetBytes(textToHash);            
        byte[] hash = sha256.ComputeHash(bytesToHash);
        string hexDigest = ToHexStr(hash);

        Console.WriteLine(hexDigest);
    }
}

public static string ToHexStr(byte[] hash)
{
    StringBuilder hex = new StringBuilder(hash.Length * 2);
    foreach (byte b in hash)
        hex.AppendFormat("{0:x2}", b);
    return hex.ToString();
}

Этот метод создает следующий результат для пустой строки:

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Этот результат соответствует пример хэшированного значения для пустой строки из AWS Документация (шаг 6) .

...