|
|
|
Встроенные хеш функции
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, есть ли в информиксе встроенные хэш функции (типа md5) которые можно использовать в sql запросах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 17:40 |
|
||
|
Встроенные хеш функции
|
|||
|---|---|---|---|
|
#18+
Нет В таком вот аксепте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 21:49 |
|
||
|
Встроенные хеш функции
|
|||
|---|---|---|---|
|
#18+
ВыбегаллоНет Но положение можно исправить. В частности, когда мне понадобился crypt для авторизации веб-пользователей, я его без особого труда сотворил. Обсуждение похожей задачи было вот тут: /topic/204849 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2005, 13:21 |
|
||
|
Встроенные хеш функции
|
|||
|---|---|---|---|
|
#18+
Проблема в том что доступ в базу есть только на чтение (ничего создавать нельзя) поэтому хэш хотелось делать средствами исключительно SQL. Тщательное изучение IBM SQL Reference показало что встроенного действительно ничего нет, пришлось сделать руками. Вдруг кому пригодится: Хеш функция четырех аргументов f(a,b,c,d) = ((29*a+b)*29+c)*29+d Не md5 конечно ... но прокатит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2005, 14:39 |
|
||
|
Встроенные хеш функции
|
|||
|---|---|---|---|
|
#18+
nbnПроблема в том что доступ в базу есть только на чтение (ничего создавать нельзя) поэтому хэш хотелось делать средствами исключительно SQL. Тщательное изучение IBM SQL Reference показало что встроенного действительно ничего нет, пришлось сделать руками. Вдруг кому пригодится: Хеш функция четырех аргументов f(a,b,c,d) = ((29*a+b)*29+c)*29+d Не md5 конечно ... но прокатит А зачем вообще это нужно? Особенно при условии что писать ничего нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2005, 14:53 |
|
||
|
Встроенные хеш функции
|
|||
|---|---|---|---|
|
#18+
Возникла такая необходимость при решении задачи интеграции с системой, которая хранит данные используя СУБД информикс. К этой системе доступ есть только на чтение (такова политика безопасности организации заказчика) - то бишь разрешено только исполнение SQL запросов для получения необходимых данных. Гениальный разработчик системы использовал в качестве первичного ключа всех объектов четыре! поля в которых хранятся 5-6 значные числа. Просто слепить 4 поля чтобы получить 20 значный первичный ключ не хотелось - как вариант использование встроенного механизма хеширования, которого в информиксе к сожалению не оказалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2005, 15:35 |
|
||
|
Встроенные хеш функции
|
|||
|---|---|---|---|
|
#18+
nbnВозникла такая необходимость при решении задачи интеграции с системой, которая хранит данные используя СУБД информикс. К этой системе доступ есть только на чтение (такова политика безопасности организации заказчика) - то бишь разрешено только исполнение SQL запросов для получения необходимых данных. Гениальный разработчик системы использовал в качестве первичного ключа всех объектов четыре! поля в которых хранятся 5-6 значные числа. Просто слепить 4 поля чтобы получить 20 значный первичный ключ не хотелось - как вариант использование встроенного механизма хеширования, которого в информиксе к сожалению не оказалось. Возможно я молодой и глупый, но у меня есть заднее чувство что md5 не гарантирует разного хеш для разных аргументов, он вполне может совпасть, аналогично ваша функция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2005, 15:52 |
|
||
|
Встроенные хеш функции
|
|||
|---|---|---|---|
|
#18+
В теории совпадение возможно. Но не на подобных данных (последовательности с шагом 1). Если бы данные имели большой разброс - то тут риск конечно бы был (это касается моей функции). Что касается md5 то тут вероятность совпадения еще меньше, только если входные данные сильно больше того что получается на выходе md5 (128 бит). Хотя с другой стороны первичный ключ - не то место где можно допускать хотябы минимальный риск совпадения - поэтому конкатенация самый надежный способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2005, 16:53 |
|
||
|
Встроенные хеш функции
|
|||
|---|---|---|---|
|
#18+
nbnВ теории совпадение возможно. Но не на подобных данных (последовательности с шагом 1). Если бы данные имели большой разброс - то тут риск конечно бы был (это касается моей функции). Что касается md5 то тут вероятность совпадения еще меньше, только если входные данные сильно больше того что получается на выходе md5 (128 бит). Хотя с другой стороны первичный ключ - не то место где можно допускать хотябы минимальный риск совпадения - поэтому конкатенация самый надежный способ. Вольному конечно воля, но чем неидеальные 12 байт или 16 байт лучше чем идеальные 24 мне не понятно. Ну я бы еще понял если бы была попытка уложиться в 8 байт. Умножение, а не деление на простое малоразрядное число 29 тоже ясности не вносит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2005, 17:16 |
|
||
|
Встроенные хеш функции
|
|||
|---|---|---|---|
|
#18+
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) и так далее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2005, 19:24 |
|
||
|
Встроенные хеш функции
|
|||
|---|---|---|---|
|
#18+
Вообщем признаю идея была не совсем правильная. И хотя результат получился нормальным (не совпали ни разу значения преобразованных полей, пробовал на всех записях в БД) рисковать я не стал и в результате конкатенации 4 полей получил 23 значный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2005, 13:49 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=33369260&tid=1608846]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 316ms |

| 0 / 0 |
