Является ли результатом хеш-хэш-хэш-хэш или зависимым от сервера?

Я делаю хэширование md5 и просто хочу убедиться, что результат:

md5.ComputeHash(bytePassword);

Является совместимым независимо от сервера?

например. Windows 2003/2008 и 32/64 бит и т.д.

Ответ 2

MD5 не зависит от операционной системы и архитектуры. Таким образом, он "согласован".

Однако MD5 принимает на входе произвольную последовательность бит и выводит последовательность из 128 бит. Во многих ситуациях вам нужны строки. Например, вы хотите хешировать пароль, а пароль - это строка. Преобразование этой строки в последовательность бит не является частью самого MD5, и существует несколько соглашений. Я не знаю точно о С#, но метод эквивалентного Java String.getBytes() будет использовать "кодировку платформы по умолчанию", которая может отличаться при установке операционной системы. Аналогично, вывод MD5 часто преобразуется в строку с шестнадцатеричной нотацией, и она может быть прописной или строчной или любой другой.

Таким образом, хотя сам MD5 согласован, ошибки часто скрываются в тех частях, которые готовят данные для MD5 и после обработки его вывода. Осторожно.

Ответ 3

Результат хеша md5 - это число. Число, возвращаемое для данного ввода, всегда одинаково, независимо от того, какой сервер или даже платформа вы используете.

Однако выражение числа может меняться. Например, 1 и 1.0 имеют одинаковое число, но выражаются по-разному. Аналогично, некоторые платформы возвращают хэш, отформатированные несколько иначе, чем другие. В этом случае у вас есть массив байтов, и это должно быть достаточно безопасным для прохождения. Просто будьте осторожны, что вы делаете после преобразования его в строку.

Ответ 4

MD5 Хеширование - это [система/время/все, кроме входа] независимо