Школа богатых программистовВ этом посте будет обсуждаться, как сгенерировать приватный ключ хеш 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