![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
zasaz63 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.5.2013 Репутация: нет Всего: нет |
Всем доброго времени суток!
Кто-нибудь знает метод хэширования без коллизий? Будет использоваться чисто в декоративных целях(на основе id), поэтому устойчивость к взлому необязательна. |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
md5
у него есть коллизии? |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Почему бы тогда просто не генерировать строки в криптографическом порядке? -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Нет, не знает и никогда не узнает есть А что? -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Вообще, есть много способов получать уникальные строчки с буковок, помимо подсчета хэша... -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
zasaz63 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.5.2013 Репутация: нет Всего: нет |
Подскажите какие |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Ну, например: 1, 2, 3, 4,... и так до бесконечности, и никогда не повторяются. А запись числа — понятие относительное. Вспомните 16-ричную систему счисления. Строка "F4D4C654DE5" обозначает десятичное число 16824668605925. Достаточно каждый раз прибавлять +1 (или +2, или +10, или +100, но всегда одинаково) и строки никогда не повторятся. Нужно только проводить сложение не в десятичной, а 16-ричной системе. При этом можно пользоваться k-ичной системой счисления со сколь угодно большим k, на которое хватит символов. Например, 36-ричной, если взять все цифры и английские буквы. Второй пример: Порождение комбинаторных объектов. На эту тему есть много материала, так как это раздел алгоритмизации, его преподают в университетах и т.п. Например, http://www.codenet.ru/progr/other/prbook/gl2.php Можно, например, генерировать все возможные перестановки в какой-то строке, где нет одинаковых символов. Например, в "qwertyuiopasdfghjkl". При этом, чтобы создать следующее значение, достаточно знать только предыдущее. Если в строке нет одинаковых символов, то все перестановки уникальны. Для строки в 19 символов их 121645100408832000 штук (надолго хватит...). Ну если начинать сразу с "qwertyuiopasdfghjkl", то остается чуть поменьше. (Первая строка — с символами в алфавитном порядке). Поскольку мы получаем их последовательно, то никогда не получим уже полученного ранее значения. Это сообщение отредактировал(а) Arantir - 1.6.2013, 01:32 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
zasaz63 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.5.2013 Репутация: нет Всего: нет |
как всё страшно) Спасибо!
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
cutwater |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Возьмем множество входов N = {0, ... n} и множество выходов N` = {H(0), ..., H(n)}, где H - хеш-функция. Допустим что хеш-функция на множестве входов N представляет собой однозначную подстановку из N в N`, т.е. любому входу из множества N будет однозначно соответствовать выход из множества N`. Теперь возьмем значение хеш-функции от n+1. Так как множество выходов хеш-функции ограничено множеством N`, на входе n+1 хеш-функция даст выход из множества N`. Таким образом абсолютно любая хеш-функция на множестве входов > множества выходов будет иметь коллизии, т.е. два значения n и m, для которых H(n) == H(m) Это сообщение отредактировал(а) cutwater - 2.6.2013, 00:08 |
|||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
Пример коллизии
Вообще насколько я понимаю, безколлизионных хэш функций быть не может. Это сообщение отредактировал(а) krundetz - 3.6.2013, 09:48 |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
бывают - если мощность множеств аргумента и хэша совпадают. только в этом случае это уже не называется хэш-функцией ![]() наличие коллизий - свойство хэш функции по определению. разговор имеет смысл, если на самом деле нужна не хэш функция, а функция преобразования в более общем смысле.
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |