DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Хеширование SHA-1 в Oracle 10g

Я уже упоминал о том, что протокол MD5 считается недостаточно надежным для современной защиты данных и вместо него часто используется SHA-1. Алгоритм SHA-1 не поддерживается в пакете DBMS_OB- FUSCATION_TOOLKIT. В версии Oracle 10^ вы можете использовать функцию HASH пакета DBMS_CRYPTO для выполнения хеширования по алгоритму SHA-1. Рассмотрим объявление функции:

Функция HASH принимает на вход только значения типа RAW, поэтому необходимо преобразовать входную символьную строку к типу RAW, что мы и делаем так же, как ранее для шифрования.

Теперь преобразованную строку можно передать в хеш-функцию.
Во втором параметре typ (который должен быть объявлен с типом PLS_INTEGER) вы указываете алгоритм хеширования. Выбрать можно один из алгоритмов, упомянутых в табл. 4.7.

Таблица 4.7. Алгоритмы хеширования в пакете DBMS CRYPTO
Константа
Описание
DBMS_CRYPTO.HASH_MD5
Message Digest 5
DBMS_CRYPTO.HASH_MD4
Message Digest 4
DBMS_CRYPTO.HASH_SH1
Secure Hashing Algorithm 1

Например, чтобы получить хеш-значение для переменной типа RAW, запишем функцию следующим образом:

Для использования алгоритма MD5 следует изменить значение параметра typ с DBMS_CRYPTO.HASH_SH1 на DBMS_CRYPTO. HASH_MD5. Свою функцию получения хеш-значения я могу построить так, чтобы она могла принимать любой алгоритм хеширования.
Соединяем фрагменты кода и получаем такую функцию:
Наконец, возвращаемое значение типа RAW необходимо преобразовать к типу VARCHAR2.
Функция применяется для хеширования значения типа VARCHAR2 и возвращает значение типа VARCHAR2, которое можно сохранить и передать. По умолчанию функция использует алгоритм SHA-1, но может принимать и любой из остальных двух алгоритмов.
 









jAntivirus