Начиная с версии 8.1.6 с Oracle поставляется пакет для шифрования и расшифровки методом DES под названием DBMS_OBFUSCATION_TOOLKIT. Процедурой DESENCRYPT этого пакета можно с помощью ключа зашифровать текстовую строку, а процедурой DESDECRYPT расшифровать.
Пример в SQL*Plus:
SET SERVEROUTPUT ON
DECLARE input_string VARCHAR2(4000) := 'Morgen, morgen, nur nicht heute';
work_string VARCHAR2(4000);
encrypted_string VARCHAR2(4000);
decrypted_string VARCHAR2(4000);
BEGIN DBMS_OUTPUT.PUT_LINE(input_string);
work_string := RPAD ( input_string , (TRUNC(LENGTH(input_string) / 8) + 1 ) * 8 , CHR(0) );
DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT ( input_string => work_string , key_string => 'MagicKey' , encrypted_string => encrypted_string );
DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT ( input_string => encrypted_string ,key_string => 'MagicKey' ,decrypted_string => work_string );
decrypted_string := RTRIM(work_string, CHR(0));
DBMS_OUTPUT.PUT_LINE(decrypted_string); END; /
Для шифрования использован восьмибайтовый ключ MagicKey. Так как алгоритм DES работает только со строками, кратными 8 байтам, мы вынуждены искусственно удлиннять входную строку. Для общего случая в качестве дополняющего символа наиболее естественным выглядит CHR(0), хотя в конкретных ситуациях он может и оказаться неприемлемым. В следующем разделе предложено более современное решение проблемы дополняющего символа.
В этом же пакете имеются аналогичные процедуры для более стойкого алгоритма 3DES, а также для получения свертки текста по алгоритму MD5, что можно использовать для гарантии целостности данных (защита от несанкционированной подмены).
Сценарий заведения пакета в БД находится в rdbms\admin\catobtk.sql.