Помогите с хэшированием MD5

Salomon1

Client
Регистрация
22.04.2014
Сообщения
36
Благодарностей
3
Баллы
8
У меня есть метод хэширования в Java и C#
Вопрос такой. Это одинаковые методы?
Если нет, то помогите сделать такой же хэш на C#.

Сервис под который я делаю это хэширование предоставляет код в Java.
А мне нужно сделать на C#
У меня есть подозрение, что MD5 написанный в Java отличается от моего...
Так как у них есть пример который мы хэшируем и мой хэш на С# отличается от их хэша на Java.

Java
Код:
                try {
                        //MD5
                    MessageDigest messageDigest = MessageDigest.getInstance("MD5");
                    messageDigest.reset();
                    messageDigest.update(str.getBytes());
                    byte[] byteArray = messageDigest.digest();
                    StringBuffer md5StrBuff = new StringBuffer();
                    for(int i = 0; i < byteArray.length; ++i) {
                        if (Integer.toHexString(255 & byteArray[i]).length() == 1) {
                            md5StrBuff.append("0").append(Integer.toHexString(255 & byteArray[i]));
                        } else {
                            md5StrBuff.append(Integer.toHexString(255 & byteArray[i]));
                        }
                    }
C#
Код:
MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(project.Variables["dannie"].Value);
byte[] hash = md5.ComputeHash(inputBytes);
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < hash.Length; i++)
    {
        sb.Append(hash[i].ToString("x2"));
    }
return sb.ToString();
 

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
117
Баллы
43
Код:
//Получаем значение строки из переменной
string input = project.Variables["generated_hash"].Value;

// Создаем объект этого класса.
System.Security.Cryptography.MD5 md5Hasher = System.Security.Cryptography.MD5.Create();
// Преобразуем входную строку в массив байт и вычисляем хэш
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
// Создаем новый Stringbuilder (Изменяемую строку) для набора байт
StringBuilder md5hash = new StringBuilder();
// Преобразуем каждый байт хэша в шестнадцатеричную строку
for (int i = 0; i < data.Length; i++)
{
    //преобразуем элемент в шестнадцатиричную строку длиной в два символа
    md5hash.Append(data[i].ToString("x2"));
}
//Возвращаем MD5 хеш для строки
return md5hash.ToString();
делай по байтам, не ошибешься)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)