// функция для хэширования массива байт заданным алгоритмом, на выходе 16-ричная строка // аргументы: входные байты сообщения, алгоритм хэширования public static string HeshAlg(Byte[] arrayByte_in, string selectedAlgHesh) { byte[] arrayByte_out = new byte[0]; // Выходная последовательность байт после хеширования string heshString = ""; // Хеш строка (16 ричный вид) try { switch (selectedAlgHesh) // Получение хеша определенным алгоритмом { case "MD5": MD5 md5 = MD5.Create(); arrayByte_out = md5.ComputeHash(arrayByte_in); md5.Dispose(); break; case "RIPEMD160": RIPEMD160 ripemd160 = RIPEMD160.Create(); arrayByte_out = ripemd160.ComputeHash(arrayByte_in); ripemd160.Dispose(); break; case "SHA1": SHA1 sha1 = SHA1.Create(); arrayByte_out = sha1.ComputeHash(arrayByte_in); sha1.Dispose(); break; case "SHA256": SHA256 sha256 = SHA256.Create(); arrayByte_out = sha256.ComputeHash(arrayByte_in); sha256.Dispose(); break; case "SHA384": SHA384 sha384 = SHA384.Create(); arrayByte_out = sha384.ComputeHash(arrayByte_in); sha384.Dispose(); break; case "SHA512": SHA512 sha512 = SHA512.Create(); arrayByte_out = sha512.ComputeHash(arrayByte_in); sha512.Dispose(); break; default: break; } heshString = BitConverter.ToString(arrayByte_out).Replace("-", ""); } catch (Exception error) { MessageBox.Show(error.Message, "НЕПРЕДВИДЕННАЯ ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error); } return(heshString); }