2015-05-30 1 views
2

Так что, если я что-то сделаю sha1($data), результат будет BLAHBLAH123. Однако, если я сделаю это снова, это будет BLAHAHS316. То же самое происходит с md5. Итак, мой вопрос в том, что является последовательным способом хэш-значений?Метод хэширования PHP, тот же вывод каждый раз

Так как function($data) будет возвращать BLAHBLAHBLAH123 каждый раз, когда он оценивается с тем же параметром $data.

EDIT: У меня есть особая цель, поскольку это не пароли, поэтому безопасность не вызывает беспокойства.

EDIT: Например, md5($data) не возвращается BLAHBLAH каждый раз, иногда он возвращается BLAHHHAL. Я не хочу этого. Я хочу, чтобы он возвращал то же самое, BLAHBLAH каждый раз!

ответ

0

Хеширование - deterministic (они были бы бесполезны, если бы это было не так).

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

Рассмотрите другой (например, время) ввод в домен, как в sha1(microtime() . $data), если вы хотите «другой выход». Я не уверен, насколько это будет полезно на практике.

Функции хеша пароля используют salt (произвольно сгенерированные, хранящиеся отдельно) в качестве дополнительного ввода, поэтому один и тот же пароль с открытым текстом приведет к другому сохраненному хеш-значению.

3

Результат операции хэширования будет изменяться только при изменении ввода.

Например:

echo sha1('test'); 

a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 

Если вы хотите его изменить каждый раз, вы могли присоединять метку времени на вход:

echo sha1('test'.time()) 

3d68b7693768f199623f31f820b1ba29b0a58769 
+0

Я пытался делать sha1 и это изменило все другое время. И я хочу, чтобы он остался прежним и НЕ менялся. – MrDummu

+0

Можете ли вы подтвердить, что '$ data' не меняется? – pcnate

+0

Позвольте мне попробовать это снова, возможно, я ошибся. И да, я могу. – MrDummu

0

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

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

$constStr = "hashThis"; 
$hashWord = md5($constStr); 

// it will return the same value always, as long as the constStr is the same 
0

Возвращаемое значение будет меняться до тех пор, как ваши изменения переменных данных $, вы не можете получить то же значение хэш из разных строк

Смежные вопросы