oracle用存储过程加密一段字符串(3des算法),oracle用存储过程加密一段字符串(3des算法)
【 tulaoshi.com - Oracle教程 】
create or replace package PG_ENCRYPT_DECRYPT
is
iKey varchar2(8):='oracle9i';
function GEN_RAW_KEY ( iKey in varchar2) return raw;
function DECRYPT_3KEY_MODE(iValue in raw,iMode in pls_integer)return varchar2;
function ENCRYPT_3KEY_MODE(iValue in varchar2,iMode in pls_integer)return raw;
function FormatStr(iValue in varchar2)return varchar2;
function FormatStr2(iValue in varchar2)return varchar2;
end;
/////////
create or replace package body PG_ENCRYPT_DECRYPT
is
function GEN_RAW_KEY ( iKey in varchar2)
return raw
as
rawkey raw(240) := '';
begin
for i in 1..length(iKey) loop
rawkey := rawkey||hextoraw(to_char(ascii(substr(iKey, i, 1))));
end loop;
return rawkey;
end GEN_RAW_KEY;
/* Creating function DECRYPT_3KEY_MODE*/
FUNCTION DECRYPT_3KEY_MODE ( iValue in raw, iMode in pls_integer)return varchar2
as
vDecrypted varchar2(4000);
rawkey raw(240) := '';
begin
rawkey := GEN_RAW_KEY(iKey);-- decrypt input string
vDecrypted := dbms_obfuscation_toolkit.des3decrypt (UTL_RAW.CAST_TO_VARCHAR2(iValue), key_string = rawkey, which = iMode);
return FormatStr2(vDecrypted);
end DECRYPT_3KEY_MODE;
/*Creating function ENCRYPT_3KEY_MODE*/
FUNCTION ENCRYPT_3KEY_MODE ( iValue in varchar2, iMode in pls_integer)return raw
as
vEncrypted varchar2(4000);
vEncryptedRaw Raw(2048);
rawkey raw(240) := '';
begin
rawkey := GEN_RAW_KEY(iKey);-- encrypt input string
vEncrypted := dbms_obfuscation_toolkit.des3encrypt (FormatStr(iValue), key_string = rawkey, which = iMode);
-- convert to raw as out
vEncryptedRaw := UTL_RAW.CAST_TO_RAW(vEncrypted);
return vEncryptedRaw;
end ENCRYPT_3KEY_MODE;
function FormatStr(iValue in varchar2)return varchar2
as
begin
declare
i number;
j number;
m_value varchar2(4000);
begin
m_value:=iValue;
i:=(length(m_value) mod 8);
if i<0 then
j:=1;
for j in 1..(8-i) loop
m_value:=m_value||'#';
end loop;
end if;
return m_value;
end;
end FormatStr;
function FormatStr2(iValue in varchar2)return varchar2
as
begin
declare
i number;
j number;
m_value varchar2(4000);
begin
m_value:=iValue;
&n
来源:http://www.tulaoshi.com/n/20160129/1494044.html
看过《oracle用存储过程加密一段字符串(3des算法)》的人还看了以下文章 更多>>