Я делаю хеш md5 и просто хочу удостовериться результат:
md5.ComputeHash(bytePassword);
Последовательно независимо от сервера?
например, окна 2003/2008 и 32/64 бита и т.д.
Да, это согласованно, спецификация алгоритма md5 определяет его независимо от платформы.
Хеширование MD5 [система / время / все, кроме ввода] не зависит
Результатом хеширования md5 является число. Число, возвращаемое для данного ввода, всегда одно и то же, независимо от того, какой сервер или даже платформу вы используете.
Однако выражение числа может отличаться. Например, 1
и 1.0
- это одно и то же число, но они выражаются по-разному. Точно так же некоторые платформы возвращают хэш, отформатированный немного иначе, чем другие. В этом случае у вас есть массив байтов, и его можно довольно безопасно передавать. Просто будьте осторожны с тем, что вы делаете после преобразования в строку.
MD5 не зависит от операционной системы и архитектуры. Поэтому он является "последовательным".
Однако, MD5 принимает на вход произвольную последовательность битов, а выдает последовательность из 128 битов. Во многих ситуациях вам нужны строки. Например, вы хотите хэшировать пароль, а пароль изначально является строкой. Преобразование этой строки в последовательность битов не является частью самого MD5, и существует несколько соглашений. Я не знаю точно о C#, но эквивалентный метод Java String.getBytes()
будет использовать "charset по умолчанию платформы", который может меняться в зависимости от установки операционной системы. Аналогично, вывод MD5 часто преобразуется в строку с шестнадцатеричной нотацией, и она может быть прописной или строчной или какой-либо другой.
Таким образом, хотя сам MD5 является последовательным, ошибки часто скрываются в тех частях, которые подготавливают данные для MD5 и обрабатывают его выходные данные. Остерегайтесь.