Периодически при работе над проектами в ProjectMaker требуется вычислить MD5 хэш той или иной переменной. Например, необходимо прогнать через этот алгоритм какой-либо пароль перед отправкой его в базу данных, ибо так безопаснее. В этом случае на помощь приходит один из следующих способов.
Способ 1. Короткий.
1 2 3 4 5 | string testString = project.Variables["var_to_md5"].Value; // Имя переменной, хэш которой хотим получить byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(testString); byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes); string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower(); return hashedString; // Возвращаем MD5 хеш для строки |
Способ простой и короткий, но «челма» не работает без директивы using:
1 | using System.Security.Cryptography; |
Если вам ранее не доводилось работать с подобными директивами, то вносятся они в соответствующий блок, который выглядит вот так:
Способ 2. 17 см
1 2 3 4 5 6 7 8 9 | string input = project.Variables["var_to_md5"].Value; // Имя переменной, хэш которой хотим получить System.Security.Cryptography.MD5 md5Hasher = System.Security.Cryptography.MD5.Create(); // Создаем объект byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input)); // Преобразуем входную строку в массив байт и вычисляем хэш StringBuilder md5hash = new StringBuilder(); // Создаем новый Stringbuilder (Изменяемую строку) для набора байт for (int i = 0; i < data.Length; i++) // Преобразуем каждый байт хэша в шестнадцатеричную строку { md5hash.Append(data[i].ToString("x2")); //преобразуем элемент в шестнадцатиричную строку длиной в два символа } return md5hash.ToString(); // Возвращаем MD5 хеш для строки |
Плюс данного способа заключается в том, что для его работы нет необходимости использовать какие-либо директивы.
Выбирайте любой из предложенных вариантов, и да прибудет с вами сила кота Кокоса.
Оставить комментарий