Вопрос по php, encryption – Альтернатива Md5 в PHP? [закрыто]

7

Какова лучшая альтернатива алгоритму Md5 для PHP для шифрования пользовательских данных, таких как пароли и другие защищенные данные, хранящиеся в базах данных MySQL?

поэтому мы все точно не знаем, что является наиболее безопасным? Ron van der Heijden
MD5 взломан, используйте Sha1 Ron van der Heijden
@Bondye: SHA1 небезопасен; использовать SHA2 SLaks
Зависит от того, для чего вы собираетесь его использовать. Для хеширования, чтобы проверить наличие дубликатов, MD5 превосходен! Alfred Godoy
Водоворот работает хорошо. Вы должны сказать, что вы делаете с этим. Brad

Ваш Ответ

6   ответов
13

SHA512 не страшный выбор. Но это не займет много времени, прежде чем он взломан для большинства паролей. приниматьСовет Джеффа, использованиеBcrypt или жеPBKDF2, Они устойчивы к EC2 или другим методам параллельной обработки. Вероятно, не иммунный, но устойчивый.

Причина, по которой лучший хэш в этом случае не лучшеABC в MD5 становится одно значение иABC в SHA512 становится одно значение. Расчет всех трехбуквенных паролейна самом деле проще для SHA512, чем было для MD5, Ключ должен быть трудным. Это означает медленный хеш, который использует много оперативной памяти и / или тот, который не может быть легко выполнен в EC2.

Лучший выбор - НЕ использовать пароли в одиночку. Решите, действительно ли логин нужен для вашего сайта, и если это так, попробуйте сначала использовать стороннего провайдера. Если это не вариант, рассмотрите пароль + токен от RSA. Используйте только пароль, если у вас нет других жизнеспособных вариантов.

При хешировании пароля ключ долженhash(password + salt) и соль должна быть уникальной для каждого пользователя, а также должна быть трудной или невозможной для угадывания. Использование имени пользователя соответствует первым критериям и лучше, чем отсутствие соли или соли для каждого пользователя,but a unique random salt for each user is a better choice, В идеале в отдельной базе данных, если не в месте, со своими учетными данными. Его также следует указывать не по имени пользователя, а по идентификатору пользователя или даже хешу идентификатора пользователя. Вы хотите, чтобы эта база данных была SQL-инъекцией. Хороший способ сделать это - не принимать ввод от пользователя, который не хэшируется. И было бы разумно позволить самому запросу выполнять хеширование. Медленный? Да, и это тоже хорошо.

Сама соль должна содержать все трудно предсказуемые данные, которые она может получить. Имя пользователя + Идентификатор пользователя + Метка времени + мусор от dev / urandom + последний твит со словом тако в нем. Дольше, тем лучше. SHA512 - хороший выбор хешей здесь.

Сводка: hash = bcrypt (пароль + соль), salt = sha512 (имя пользователя + user_id + метка времени + микротекст + биты dev / urandom + другой шум).

Если вы все еще волнуетесь после всего этого. Не стесняйтесь SHA512 зашифрованный пароль. Вы получите силу SHA512, которая при взломе показывает только более грубую силу зашифрованного хэша.

1

Ты можешь использоватьгашиш таким образом, у вас есть множество алгоритмов для хэширования ваших данных.

hash('sha256', $data);
8

http://php.net/manual/en/book.hash.php

Пример кода:

$hash = hash('SHA512', $pass);

Это превращает это:

SHA512("The quick brown fox jumps over the lazy dog")

В:

0x07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6

Дальнейшее чтение: http://en.wikipedia.org/wiki/SHA-2

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
3

ключаютhash расширение. На данный момент лучшим выбором для хэш-функции будет SHA-512. Вы можете использовать SHA-512 со следующей функцией:

<?php
    function sha512($string) {
        return hash('sha512', $string);
    }
?>

Существуют и другие альтернативы с меньшими размерами вывода, например:SHA-256 или жеRIPEMD-160.

Обновление: Читая ваш обновленный вопрос, я предлагаю phpкрипта функция.

Error: User Rate Limit Exceededen.wikipedia.org/wiki/SHA_hash_functions
Error: User Rate Limit ExceededSHA-256Error: User Rate Limit ExceededSHA-512Error: User Rate Limit Exceeded
0

гашиш функция. Вы могли бы пойти читать оMcrypt также. Думаю, это лучшая хеш-вещь. Mcrypt обеспечивает хеширование на основе цикла процессора.

0

Mcrypt предоставляет множество более безопасных методов (а также сам md5, кстати).

Error: User Rate Limit Exceeded

Похожие вопросы