Мне нужна очень быстрая функция хэширования строк, которая хорошо вписывается в веб-приложение, написанное на PHP.Очень быстрая хеш-функция для хэширования строк 8-16 байтов
Проблема, которую я пытаюсь преодолеть, заключается в назначении идентификаторов разрешениям в системе управления доступом. Я думаю об использовании хешированных строк для представления идентификаторов разрешений. Таким образом, я буду в состоянии проверить разрешения так, как это:
if ($Auth->isAllowed($user, "blog.comment")) {
// Do some operation
}
...
if ($Auth->isAllowed($user, "profile.avatar.change")) {
// Do some other operation
}
В таблице БД будет отображать разрешение хэшей в роли пользователя. Чтобы проверить, разрешено ли пользователю делать «profile.avatar.change», соответствующая строка будет хеширована и проверена на таблице DB.
Это очень удобно и не нужно беспокоиться о сохранении уникальных идентификаторов доступа среди разных модулей. Но функция хеширования должна быть очень эффективной.
Хешинг - это улица с односторонним движением, поэтому нет ничего, что можно было бы проверить в хеше, кроме его существования, для чего-то подобного. –
Наиболее распространенный способ - следовать подходу linux. (с помощью 0-7 для представления разрешений). Назначьте идентификаторы разрешений и сделайте 2^(номер идентификатора), чтобы создать целое число, а затем разверните его таким же образом, чтобы выяснить, какие разрешения у вас есть ... Или просто передать объекты/маркеры с кучей переменных и проверить $ user- > can_change_stuff или $ user-> has_apples – Dimi
@apokryfos, это не дубликат. Все эти вопросы мои. Этот вопрос более конкретен в отношении хеширования строк. – ezpresso