Как генерировать хеш-строку с некоторыми специальными правилами в PHP?

StackOverflow https://stackoverflow.com/questions/3178109

Вопрос

Я работаю над проектом, где мне нужно использовать некоторые хеш-функцию, чтобы сделать хэш-строку. Эта хеш-строка должна быть уникальной состоит из 6 до 13 символов (фиксированная длина).

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

Мне нужна эта хеш-строка, чтобы состоит из только действительных персонажей (0-9 AZ AZ).

Какая хеш-функция должна использовать для достижения этой цели? Как я могу генерировать такие хэш-строки?

Добавлено позже: я хочу генерировать эту строку и передавать его пользователю, чтобы он мог вернуться позже, чтобы редактировать запись. Любая другая идея приемлема.

Это было полезно?

Решение

Используйте склеп:

$hash = crypt("somevaluetohash", $uniqueid);

Уникальный идентификатор - это соль, чтобы вы могли генерировать разные значения в зависимости от идентификатора. Так что, если бы один пользователь имел пароль «quotValuetohash», а другой пользователь имел то же самое, окончание хэша не будет таким же.

Другие советы

<?php
  $id;
  $hash_full = md5($id); //hash('sha256', $id);
  $hash_cropped = substr($hash_full, 0, 6);
?>

Использовать хеш () для других алгоритмов хеширования.

Но что вам нужны этот хэши? Для меня это не имеет большого смысла генерировать хэш от удостоверения личности, не смог ли вы просто использовать ID вместо этого?

Это действительно нужно быть криптографической контрольной суммой? Или проще одной контрольной суммы подходит? Является ли база данных, предоставленная основным ключом, сам не подходит?

У вас есть много вариантов, от простейших CRC32. на самый продвинутый Sha512..

Но если вы делаете это для определенного применения (например, Визирование файловой системы, или Нахождение близлежащих объектов Используя некоторые метрики), то вам придется указать больше вашей проблемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top