Пакет для Oracle: DBMS_CRYPTO

Источник: all-oracle

Рекомендовано для:
  • Oracle Database 10g R1
  • Oracle Database 10g R2
  • Oracle Database 11g R1
 

Пакет DBMS_CRYPTO появился в Oracle 10g и пришел на смену пакету DBMS_OBFUSCATION_TOOLKIT доступному в версиях Oracle 8i и 9i. Новый пакет проще в использовании и содержит новые криптографические алгоритмы:

  • Криптографические алгоритмы - DES, 3DES, AES, RC4, 3DES_2KEY
  • Дополнительные формы - PKCS5, zeroes
  • Режимы сцепления шифрованных блоков - CBC, CFB, ECB, OFB
  • Криптографические алгоритмы хэширования - MD5, SHA-1, MD4
  • Алгоритмы хеширования (MAC) - HMAC_MD5, HMAC_SH1
  • Криптографический генератор псевдослучайных чисел - RAW, NUMBER, BINARY_INTEGER
  • Типы данных - RAW, CLOB, BLOB

При установке, пакет размещается в схеме SYS, и при необходимости, другим пользователям дается право использования.

Простой пример использования пакета:

SET SERVEROUTPUT ON
DECLARE
  l_name           VARCHAR2(20) := 'http://all-oracle.ru';
  l_ccn_raw        RAW(128) := UTL_RAW.cast_to_raw(l_name);
  l_key            RAW(128) := UTL_RAW.cast_to_raw('abcdefgh');
  l_encrypted_raw  RAW(2048);
  l_decrypted_raw  RAW(2048);
BEGIN
  DBMS_OUTPUT.put_line('Original  : ' // l_name);
  l_encrypted_raw := DBMS_CRYPTO.encrypt(src => l_ccn_raw, 
                                         typ => DBMS_CRYPTO.des_cbc_pkcs5, 
                                         key => l_key);
  DBMS_OUTPUT.put_line('Encrypted : ' // RAWTOHEX(UTL_RAW.cast_to_raw(l_encrypted_raw)));
  l_decrypted_raw := DBMS_CRYPTO.decrypt(src => l_encrypted_raw, 
                                         typ => DBMS_CRYPTO.des_cbc_pkcs5, 
                                         key => l_key);
  DBMS_OUTPUT.put_line('Decrypted : ' // UTL_RAW.cast_to_varchar2(l_decrypted_raw));
END;
/

Результат работы вышеприведенного примера:

Original  : http://all-oracle.ru
Encrypted : 423837344332413842393943454130383242383431354138303943463533413631353131343236314441454136333532
Decrypted : http://all-oracle.ru
PL/SQL procedure successfully completed


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=20767