Jednoduchý a zabezpečený způsob šifrování a dešifrování dat v Oracle pomocí balíčku DBMS_OBFUSCATION_TOOLKIT. DBMS_OBFUSCATION_TOOLKIT umožňuje aplikaci šifrovat data pomocí algoritmů Data Encryption Standard (DES) nebo Triple DES. Níže je uveden příklad databázově zabalené funkce pro šifrování dat v Oracle pomocí PL SQL.
Následující balíček Toolkit používá balíček DBMS_OBFUSCATION_TOOLKIT k šifrování a dešifrování dat.
Poznámka:Chcete-li mít vlastní tajnou metodu šifrování, musíte upravit klíč definovaný v tomto balíčku. Data jsou šifrována klíčem, který lze dešifrovat pouze tímto klíčem. Další informace...
Použití k šifrování dat v Oracle:
Select toolkit.encrypt('The test data 123.') From Dual; Shows: ----------- 5C8ADD7B98919FC937A53AB986782EA9EE63D4ADDF7CA322
Dešifrování dat:
select Toolkit.decrypt('5C8ADD7B98919FC937A53AB986782EA9EE63D4ADDF7CA322') from dual; Shows: ----------- The test data 123.
Create Or Replace PACKAGE Toolkit As FUNCTION encrypt (p_text In VARCHAR2) RETURN RAW; FUNCTION decrypt (p_raw In RAW) RETURN VARCHAR2; END Toolkit; /
Create Or Replace PACKAGE BODY Toolkit As
---- the custom key for
g_key RAW(32767) := UTL_RAW.cast_to_raw('20130417');
---- the custom padding character
g_pad_chr VARCHAR2(1) := '_';
PROCEDURE padstring (p_text In OUT VARCHAR2);
FUNCTION encrypt (p_text In VARCHAR2) RETURN RAW Is
l_text VARCHAR2(32767) := p_text;
l_encrypted RAW(32767);
BEGIN
padstring(l_text);
DBMS_OBFUSCATION_TOOLKIT.desencrypt(input => UTL_RAW.cast_to_raw(l_text),
Key => g_key,
encrypted_data => l_encrypted);
RETURN l_encrypted;
END;
FUNCTION decrypt (p_raw In RAW) RETURN VARCHAR2 Is
l_decrypted VARCHAR2(32767);
BEGIN
DBMS_OBFUSCATION_TOOLKIT.desdecrypt(input => p_raw,
Key => g_key,
decrypted_data => l_decrypted);
RETURN Rtrim(UTL_RAW.cast_to_varchar2(l_decrypted), g_pad_chr);
END;
PROCEDURE padstring (p_text In OUT VARCHAR2) Is
l_units NUMBER;
BEGIN
IF Length(p_text) Mod 8 > 0 Then
l_units := Trunc(Length(p_text)/8) + 1;
p_text := Rpad(p_text, l_units * 8, g_pad_chr);
END IF;
END;
END Toolkit;
/

-
Jaký je nejlepší postup pro vložení záznamu, pokud ještě neexistuje?
-
Jak mohu získat včasný přístup k aktualizacím Oracle Java, abych mohl otestovat své RIA a vyhnout se nácvikům požáru, když jsou tyto aktualizace zveřejněny?
-
Jak používat sql*plus v příkazovém skriptu Windows k řízení toku?
-
Přehled programování na straně serveru v PostgreSQL