У меня есть string
и я хочу использовать ее с помощью хэш-функции SHA-256 с помощью С#. Я хочу что-то вроде этого:
string hashString = sha256_hash("samplestring");
Есть ли что-то встроенное в рамки для этого?
У меня есть string
и я хочу использовать ее с помощью хэш-функции SHA-256 с помощью С#. Я хочу что-то вроде этого:
string hashString = sha256_hash("samplestring");
Есть ли что-то встроенное в рамки для этого?
Реализация может быть такой
public static String sha256_hash(String value) {
StringBuilder Sb = new StringBuilder();
using (SHA256 hash = SHA256Managed.Create()) {
Encoding enc = Encoding.UTF8;
Byte[] result = hash.ComputeHash(enc.GetBytes(value));
foreach (Byte b in result)
Sb.Append(b.ToString("x2"));
}
return Sb.ToString();
}
Изменить: Реализация Linq более кратка, но, возможно, менее читаема:
public static String sha256_hash(String value) {
using (SHA256 hash = SHA256Managed.Create()) {
return String.Concat(hash
.ComputeHash(Encoding.UTF8.GetBytes(value))
.Select(item => item.ToString("x2")));
}
}
Изменить 2:.NET Core
public static String sha256_hash(string value)
{
StringBuilder Sb = new StringBuilder();
using (var hash = SHA256.Create())
{
Encoding enc = Encoding.UTF8;
Byte[] result = hash.ComputeHash(enc.GetBytes(value));
foreach (Byte b in result)
Sb.Append(b.ToString("x2"));
}
return Sb.ToString();
}
Я искал интерактивное решение и смог скомпилировать ниже ответ от Дмитрия:
public static String sha256_hash(string value)
{
return (System.Security.Cryptography.SHA256.Create()
.ComputeHash(Encoding.UTF8.GetBytes(value))
.Select(item => item.ToString("x2")));
}