2013-08-13 2 views
1

Мне нужен фактический алгоритм, используемый функцией Oracle DBMS_UTILITY.get_hash_value. Мне нужно иметь возможность генерировать эту информацию без доступа к базе данных Oracle.Java-реализация Oracle DBMS_UTILITY.GET_HASH_VALUE Функция

+1

Когда вы говорите о хэширования функции, вам нужно указать, для какой цели - например, это для обнаружения дубликатов, равномерного распределения данных или для криптографического приложения? –

+1

Я ценю помощь, но я действительно не вижу значимости * почему * ... не говоря уже о том, что я считаю, что в этом случае это нарушит мою NDA, чтобы раскрыть этот факт. Меня просят разработать инструмент, который должен реплицировать хеш-функцию Oracle ... не так ли достаточно? –

+0

Вам не нужно нарушать NDA, вам просто нужно быть более конкретным, чем просто «Я хочу алгоритм функции хэширования». Это похоже на высказывание «Я хочу алгоритм сортировки», предполагая, что есть только один, т. Е. Не указывая, нужен ли вам алгоритм, который быстрее сортируется, использует меньше памяти или выполняет меньше обменов. –

ответ

3

Оракул не детализирует реализацию хэша и Tom Kyte has indicated, что реализация может изменить выпуск для выпуска. Если вы ищете хеш-функцию, которую вы можете использовать в Java и Oracle, вы можете использовать хэши SHA1 (и другие), используя sys.dbms_crypto.hash в oracle, и MessageDigest.getInstance("SHA-1") (подробности см. На этом вопрос - Java String to SHA1).

Если вам нужно использовать один и тот же algorithim, как GET_HASH_VALUE Oracle, возможно, обратившись в службу поддержки Oracle может помочь ...

+0

это хэш-функция, конечно, это вызовет столкновения! (обратите внимание, что это зависит от того, какой размер хэша вы выберете) –

+1

Да, но никто еще не нашел два сообщения, которые дают столкновение с хэшем SHA-1. Для целей идентификации уникальной записи или различий между двумя записями на основе типичных данных базы данных должно быть достаточно SHA1. Всегда есть SHA-256. http://stackoverflow.com/questions/3475648/sha1-collision-demo-example –

+0

Вы сказали: «Люди часто сталкивались с столкновениями», как если бы это указывало на присущую ему ошибку в ее реализации. Я чувствовал, что это несправедливо. Кроме того, вы делаете предположение, что OP нуждается в хеше, который идентифицирует уникальные записи/различия между двумя записями - предположение, которое, я считаю, необоснованно, учитывая отсутствие деталей в вопросе. Заметьте, однако, я не отрицаю ваш ответ. –