oracle 3des函数,Oracle MD5、3des实例

dbms_obfuscation_toolkit简介

dbms_obfuscation_toolkit主要有一下几个存储过程:-

DESGETKEY   — 产生密钥,用于DES算法

DES3GETKEY  – 产生密钥,用于Triple DES算法

DESENCRYPT  – 用DES算法加密数据

DESDECRYPT  – 用DES算法解密数据

DES3ENCRYPT — 用Triple DES算法加密数据

DES3DECRYPT — 用DES算法解密数据

MD5         — 用MD5算法加密数据

心得:加密与解密时密钥与明文(密文)的长度都要是8的倍数。

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 ENCRYPT(iValue in varchar2) return raw;

FUNCTION DECRYPT(iValue in raw) return varchar2;

FUNCTION MD5(passwd 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;

/*

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 vDecrypted;

end;

/*

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(iValue,

key_string => rawkey,

which      => iMode);

-- convert to raw as out

vEncryptedRaw := UTL_RAW.CAST_TO_RAW(vEncrypted);

return vEncryptedRaw;

end;

FUNCTION ENCRYPT(iValue in varchar2) return raw as

vEncrypted    varchar2(4000);

vEncryptedRaw Raw(2048);

rawkey        raw(240) := '';

rawkey1        raw(240) := '';

begin

rawkey := GEN_RAW_KEY(iKey);

rawkey1 := GEN_RAW_KEY(iValue);

-- encrypt input string

dbms_obfuscation_toolkit.DESEncrypt(input          => rawkey1,

key            => rawkey,

encrypted_data => vEncryptedRaw);

-- convert to raw as out

return vEncryptedRaw;

end;

FUNCTION DECRYPT(iValue in raw) return varchar2 as

vEncrypted    varchar2(4000);

vEncryptedRaw Raw(2048);

rawkey        raw(240) := '';

rawkey1        raw(240) := '';

begin

rawkey := GEN_RAW_KEY(iKey);

-- encrypt input string

dbms_obfuscation_toolkit.DESDecrypt(input => iValue,key => rawkey,decrypted_data => vEncryptedRaw);

-- convert to raw as out

return vEncryptedRaw;

end;

FUNCTION MD5(passwd IN VARCHAR2) RETURN VARCHAR2 IS

retval varchar2(32);

BEGIN

retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd));

RETURN retval;

END;

end;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值