|
|
|
| Господа, посоветуйте алгоритм (или готовую) хэш-функции, чтоб результатом был набор десятичных чисел с заданным количеством разрядов.
Например, fn('Мама мыла раму', 10) = '8305832011' | |
|
|
|
|
|
|
|
для: Meh
(30.03.2010 в 22:41)
| | 1. почему набор, а не одно число заданной разрядности?
2. в каком диапазоне второй параметр?
То есть насколько много разрядов есть необходимость получать? | |
|
|
|
|
|
|
|
для: Trianon
(30.03.2010 в 23:34)
| | 1. Сорри, конечно же число с заданной разрядностью.
2. Хэшируемая строка может иметь от 1 до 20 знаков. Длина хэша - от 8 до 16 разрядов.
При эксплуатации количество разрядов будет всегда одинаковым. Просто сейчас нужно понять (подобрать) оптимальную длину хэша.
Сейчас экспериментирую с php-функцией crc32() и MySQL-функцией CRC32(). | |
|
|
|
|
|
|
|
для: Meh
(31.03.2010 в 00:14)
| | crc32 больше 32 двоичных (и соответственно [32 lg 2] = 9 десятичных разрядов Вам не даст.
Более емкие хеши md5() и sha1() имеют разрядность 128 и 160 бит соответственно. Но вычисляются существенно медленнее.
Впрочем Вы можете вычислить два хеша CRC32 для прямой строки и для строки с обратным порядком байт. Получите как раз 9+9 = 18 разрядов.
Ну а взять нужное число цифр - substr() в помощь. Или MIDDLE() | |
|
|
|
|
|
|
|
для: Trianon
(31.03.2010 в 00:25)
| | >Впрочем Вы можете вычислить два хеша CRC32 для прямой строки и для строки с обратным порядком байт. Получите как раз 9+9 = 18 разрядов.
Собственно, до этого я и дошёл.
Спасибо за поддержку. | |
|
|
|
|
|
|
|
для: Meh
(30.03.2010 в 22:41)
| | А где это нужно? | |
|
|
|