PHP хэш-строка из строки в целое число - PullRequest
14 голосов
/ 08 июня 2009

Есть ли в PHP встроенная функция для преобразования строк в целочисленные хэши, что трудно перевернуть?

Теперь я знаю, что, вероятно, мне не составит труда сделать md5 и обработать его подстроку как число с основанием 16, но я ищу что-то встроенное.

Спасибо.

Ответы [ 3 ]

31 голосов
/ 08 июня 2009

Я думаю, что лучшая ставка выбрала бы стандартный хеш [либо md5(), либо sha1()], чтобы получить хэш вашей строки, а затем получить целочисленный хэш в base_convert($hash, 16, 10), который должен конвертировать ваш хеш. в целочисленный хеш.

Надеюсь, я правильно понимаю вашу проблему.

3 голосов
/ 08 июня 2009

Я думаю, что вы на правильном пути в решении этой проблемы в два этапа.

Во-первых, вам, вероятно, следует придерживаться хеша md5, чтобы выполнить требование "трудно перевернуть".

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

для второй части, что вы собираетесь точно? имеет целое число? Или просто печатные символы? если вы просто хотите преобразовать свой хэш во что-то, что вы можете сохранить в базе данных, передать по проводам или по какой-то другой причине, по которой строка md5 не сработает, функция convertuuencode может работать для вас: http://us.php.net/manual/en/function.convert-uuencode.php

Еще один обходной хакерский подход - получить двоичное значение вашего хэша и преобразовать его в десятичное число, используя: http://us.php.net/manual/en/function.bindec.php, хотя я никогда не пробовал этого и не уверен, будет ли он работать так же, как вы хочу это.

2 голосов
/ 08 июня 2009

Я не думаю, что вы найдете что-то встроенное для этого, но ваша идея с md5() довольно хороша, на самом деле. Я не мог представить, зачем вам нужно что-то еще: не может быть быстрее, не может быть более стабильным, ...

...