Примечание: Обновленный мой ответ будет более конкретно к рассматриваемому вопросу при отражении замечаний.
Хэши - это компьютерные байт-массивы, и поскольку представление массива байтов строки зависит от используемой текстовой кодировки, возможно, не удастся ответить на ваш вопрос. Это связано с тем, что мы точно не знаем, что использует кодировка текста http://www.sha1-online.com.
Я сделал следующее предположение, использующее кодировку UTF8, поэтому, пока мой примерный код будет выдавать хеш, указанный вами в вопросе, с соответствующим вводом, он может не всегда воспроизводить один и тот же хэш как http://www.sha1-online.com для других данных.
.NET Framework предоставляет 3 класса реализации SHA1, а именно SHA1Cng, SHA1CryptoServiceProvider и SHA1Managed.
Основное отличие этих реализаций здесь от Which one to use: Managed vs. NonManaged hashing algorithms, но я использовал его для SHA1Указанный в фрагменте кода ниже, поскольку он полностью реализован в управляемом коде и поэтому, хотя и медленнее, потенциально может быть более переносимым на разные платформы.
Выход хэша также представляет собой массив байтов, поэтому для превращения хэша в текстовое представление я преобразовал байты в их шестнадцатеричное представление и объединил их, поскольку это представляется представлением, которое http://www.sha1-online.com решит использовать.
static void Main(string[] args)
{
var sha1 = new System.Security.Cryptography.SHA1Managed();
var plaintextBytes = Encoding.UTF8.GetBytes("20150819100015.test.1002-4-2015.978.GBP");
var hashBytes = sha1.ComputeHash(plaintextBytes);
var sb = new StringBuilder();
foreach (var hashByte in hashBytes)
{
sb.AppendFormat("{0:x2}", hashByte);
}
var hashString = sb.ToString();
}
Не используйте SHA-1. Он сломан и уходит. –
@ Поверьте, но иногда вам нужно взаимодействовать с устаревшими или плохо обслуживаемыми системами. – CodeCaster
@CodeCaster, true. Только предупреждение, на всякий случай. –