Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Встроенные хеш функции / 11 сообщений из 11, страница 1 из 1
08.11.2005, 17:40
    #33367332
nbn
nbn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Встроенные хеш функции
Подскажите пожалуйста, есть ли в информиксе встроенные хэш функции (типа md5) которые можно использовать в sql запросах?
...
Рейтинг: 0 / 0
08.11.2005, 21:49
    #33367755
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Встроенные хеш функции
Нет
В таком вот аксепте
...
Рейтинг: 0 / 0
09.11.2005, 13:21
    #33368780
Ilya Kulagin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Встроенные хеш функции
ВыбегаллоНет

Но положение можно исправить. В частности, когда мне понадобился crypt для авторизации веб-пользователей, я его без особого труда сотворил. Обсуждение похожей задачи было вот тут:

/topic/204849
...
Рейтинг: 0 / 0
09.11.2005, 14:39
    #33369046
nbn
nbn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Встроенные хеш функции
Проблема в том что доступ в базу есть только на чтение (ничего создавать нельзя) поэтому хэш хотелось делать средствами исключительно SQL. Тщательное изучение IBM SQL Reference показало что встроенного действительно ничего нет, пришлось сделать руками. Вдруг кому пригодится:

Хеш функция четырех аргументов f(a,b,c,d) = ((29*a+b)*29+c)*29+d

Не md5 конечно ... но прокатит
...
Рейтинг: 0 / 0
09.11.2005, 14:53
    #33369100
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Встроенные хеш функции
nbnПроблема в том что доступ в базу есть только на чтение (ничего создавать нельзя) поэтому хэш хотелось делать средствами исключительно SQL. Тщательное изучение IBM SQL Reference показало что встроенного действительно ничего нет, пришлось сделать руками. Вдруг кому пригодится:

Хеш функция четырех аргументов f(a,b,c,d) = ((29*a+b)*29+c)*29+d

Не md5 конечно ... но прокатит
А зачем вообще это нужно? Особенно при условии что писать ничего нельзя.
...
Рейтинг: 0 / 0
09.11.2005, 15:35
    #33369260
nbn
nbn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Встроенные хеш функции
Возникла такая необходимость при решении задачи интеграции с системой, которая хранит данные используя СУБД информикс. К этой системе доступ есть только на чтение (такова политика безопасности организации заказчика) - то бишь разрешено только исполнение SQL запросов для получения необходимых данных. Гениальный разработчик системы использовал в качестве первичного ключа всех объектов четыре! поля в которых хранятся 5-6 значные числа. Просто слепить 4 поля чтобы получить 20 значный первичный ключ не хотелось - как вариант использование встроенного механизма хеширования, которого в информиксе к сожалению не оказалось.
...
Рейтинг: 0 / 0
09.11.2005, 15:52
    #33369314
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Встроенные хеш функции
nbnВозникла такая необходимость при решении задачи интеграции с системой, которая хранит данные используя СУБД информикс. К этой системе доступ есть только на чтение (такова политика безопасности организации заказчика) - то бишь разрешено только исполнение SQL запросов для получения необходимых данных. Гениальный разработчик системы использовал в качестве первичного ключа всех объектов четыре! поля в которых хранятся 5-6 значные числа. Просто слепить 4 поля чтобы получить 20 значный первичный ключ не хотелось - как вариант использование встроенного механизма хеширования, которого в информиксе к сожалению не оказалось.
Возможно я молодой и глупый, но у меня есть заднее чувство что md5 не гарантирует разного хеш для разных аргументов, он вполне может совпасть, аналогично ваша функция.
...
Рейтинг: 0 / 0
09.11.2005, 16:53
    #33369543
nbn
nbn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Встроенные хеш функции
В теории совпадение возможно. Но не на подобных данных (последовательности с шагом 1). Если бы данные имели большой разброс - то тут риск конечно бы был (это касается моей функции). Что касается md5 то тут вероятность совпадения еще меньше, только если входные данные сильно больше того что получается на выходе md5 (128 бит). Хотя с другой стороны первичный ключ - не то место где можно допускать хотябы минимальный риск совпадения - поэтому конкатенация самый надежный способ.
...
Рейтинг: 0 / 0
09.11.2005, 17:16
    #33369610
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Встроенные хеш функции
nbnВ теории совпадение возможно. Но не на подобных данных (последовательности с шагом 1). Если бы данные имели большой разброс - то тут риск конечно бы был (это касается моей функции). Что касается md5 то тут вероятность совпадения еще меньше, только если входные данные сильно больше того что получается на выходе md5 (128 бит). Хотя с другой стороны первичный ключ - не то место где можно допускать хотябы минимальный риск совпадения - поэтому конкатенация самый надежный способ.
Вольному конечно воля, но чем неидеальные 12 байт или 16 байт лучше чем идеальные 24 мне не понятно. Ну я бы еще понял если бы была попытка уложиться в 8 байт. Умножение, а не деление на простое малоразрядное число 29 тоже ясности не вносит.
...
Рейтинг: 0 / 0
09.11.2005, 19:24
    #33369884
idev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Встроенные хеш функции
nbnВ теории совпадение возможно. Но не на подобных данных (последовательности с шагом 1). Если бы данные имели большой разброс - то тут риск конечно бы был (это касается моей функции). Что касается md5 то тут вероятность совпадения еще меньше, только если входные данные сильно больше того что получается на выходе md5 (128 бит). Хотя с другой стороны первичный ключ - не то место где можно допускать хотябы минимальный риск совпадения - поэтому конкатенация самый надежный способ.

На первый взгляд как раз ваша функция
f(a,b,c,d) = ((29*a+b)*29+c)*29+d
кажется очень удачной для повторения результатов, на данных которые последовательно инкрементятся.

Собственно берем любые (а, b, c, d) - они дают значение функции f
Это же значение функции будет и для (a, b, c - 1, d + 29) и так далее :)
...
Рейтинг: 0 / 0
10.11.2005, 13:49
    #33371175
nbn
nbn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Встроенные хеш функции
Вообщем признаю идея была не совсем правильная. И хотя результат получился нормальным (не совпали ни разу значения преобразованных полей, пробовал на всех записях в БД) рисковать я не стал и в результате конкатенации 4 полей получил 23 значный ключ.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Встроенные хеш функции / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]