В этом посте будет обсуждаться, как сгенерировать приватный ключ хеш SHA-256 строки в C#.
Вы можете использовать SHA256 class для вычисления хэша SHA-256. Чтобы вычислить хэш-значение SHA256 строки, сначала инициализируйте хэш-объект SHA256, используя функцию SHA256.Create() метод и преобразовать данную строку в массив байтов с Encoding.GetBytes() метод. Затем вычислите хеш-значение для указанного массива байтов, используя функцию ComputeHash() метод. Наконец, вы можете преобразовать массив байтов в 64-символьную строку в шестнадцатеричном формате, как показано ниже:
using System; using System.Text; using System.Security.Cryptography; public class Example { static string ComputeSHA256(string s) { string hash = String.Empty; // Инициализировать хеш-объект SHA256 using (SHA256 sha256 = SHA256.Create()) { // Вычислить хэш заданной строки byte[] hashValue = sha256.ComputeHash(Encoding.UTF8.GetBytes(s)); // Преобразование массива байтов в строковый формат foreach (byte b in hashValue) { hash += $"{b:X2}"; } } return hash; } public static void Main() { string hash = ComputeSHA256("Hello World"); Console.WriteLine(hash); } }результат: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
Обратите внимание, что SHA256 класс требует System.Security.Cryptography пространство имен. Вы также можете использовать SHA256Managed класс, но он устарел. С использованием new SHA256Managed() инициализация хеш-объекта SHA256 приведет к предупреждению SYSLIB0021: «SHA256Managed» устарело: «Производные криптографические типы устарели. Вместо этого используйте метод Create для базового типа.'. Вот еще более короткая версия приведенного выше кода, которая заменяет foreach петля с BitConverter.ToString() метод:
using System; using System.Text; using System.Security.Cryptography; public class Example { static string ComputeSHA256(string s) { using (SHA256 sha256 = SHA256.Create()) { // Вычислить хэш заданной строки byte[] hashValue = sha256.ComputeHash(Encoding.UTF8.GetBytes(s)); // Преобразование массива байтов в строковый формат return BitConverter.ToString(hashValue).Replace("-", ""); } } public static void Main() { string hash = ComputeSHA256("Hello World"); Console.WriteLine(hash); } }результат: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
Если вы используете .NET 5 и выше, вы можете использовать Convert.ToHexString() метод для преобразования массива байтов в его эквивалентное строковое представление.
using System; using System.Text; using System.Security.Cryptography; public class Example { static string ComputeSHA256(string s) { using (SHA256 sha256 = SHA256.Create()) { byte[] hashValue = sha256.ComputeHash(Encoding.UTF8.GetBytes(s)); return Convert.ToHexString(hashValue); } } public static void Main() { string hash = ComputeSHA256("Hello World"); Console.WriteLine(hash); } }результат: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e