dbms_obfuscation_toolkit(数据加密解密)

该包可以加密解密应用数据;
还可以生成密码校验和;

1,DESEncrypt

dbms_obfuscation_toolkit.DESEncrypt(input_string ,key => ,encrypted_data => out );
 /*
该过程用于DES算法时,对输入数据进行加密,并生成加密格式的数据;
*/
DECLARE
    encrypted_string VARCHAR2(100);
BEGIN
    dbms_obfuscation_toolkit.Desencrypt(input_string => ’scottsco’,
    key_string =>2dabc123’, encrypted_string => encrypted_string);

    dbms_output.Put_line(encrypted_string);
END;  

2,DESDecrypt

dbms_obfuscation_toolkit.DESDecrypt(input => ,key => ,decrypted_data => );
 /*
该过程用于DES算法时,对生成的数据进行解密,解密秘钥必须与加密秘钥完全一致;
*/
DECLARE
    encrypted_string VARCHAR2(100);
    decrypted_string VARCHAR2(100);
BEGIN
    dbms_obfuscation_toolkit.Desencrypt(input_string => ’scottsco’,
    key_string =>1234abcd’, encrypted_string => encrypted_string);

    dbms_obfuscation_toolkit.Desdecrypt(input_string => encrypted_string,
    key_string =>1234abcd’, decrypted_string => decrypted_string);

    dbms_output.Put_line(decrypted_string);
END;  

3,DES3Encrypt

dbms_obfuscation_toolkit.DES3Encrypt(,input => ,key => ,encrypted_data => );
/*
该过程用于DES3算法时,对输入数据进行加密,并生成加密格式的数据.
输入数据必须是8的倍数,秘钥不能少于16个字符;
*/
declare
input varchar2(8):= ‘中国你好’;
key varchar2(16):=1234567890abcdef’;
str varchar2(100);
begin
dbms_obfuscation_toolkit.DES3Encrypt(
input_string => input,
key_string =>key,
encrypted_string =>str);
dbms_output.put_line(str);
end;

4,DES3Dncrypt

/*
该过程用于DES3算法时,对生成的数据进行解密,解密秘钥必须与加密秘钥完全一致;
*/

declare
input varchar2(8):= ‘中国你好’;
key varchar2(16):=1234567890abcdef’;
str_in varchar2(100);
str_out varchar2(100);
begin
dbms_obfuscation_toolkit.DES3Encrypt(
input_string =>input,
key_string =>key,
encrypted_string =>str_in );
dbms_obfuscation_toolkit.DES3Decrypt(
input_string =>str_in,
key_string =>key,
decrypted_string =>str_out);
dbms_output.put_line(str_out);
end;

5,DESGetKey

dbms_obfuscation_toolkit.DESGetKey(seed => ,key => );
/*
该过程用于DES算法时,返回秘钥
*/
declare
key raw(100);
begin
dbms_obfuscation_toolkit.DES3GetKey(seed=>’scottsco’,key=>key );
dbms_output.put_line(key);
end;

6,DES3GetKey

dbms_obfuscation_toolkit.DES3GetKey(seed =>,key => );
/*
该过程用于DES3算法时,返回秘钥
*/
declare
input raw:= ‘中国你好’;
key raw:=1234567890abcdef’;
begin
dbms_obfuscation_toolkit.DES3GetKey(seed=>input,key=>key );
dbms_output.put_line(key);
end;

7,md5

dbms_obfuscation_toolkit.MD5(input => ,checksum => );
/*
使用该过程生成密码校验和,防止黑客连环破解加密数据;
*/

declare
   input varchar2(8):= '中国你好';
   key varchar2(16):= '1234567890abcdef';
   str varchar2(100);
   str1 varchar2(100);
 begin
   dbms_obfuscation_toolkit.DESEncrypt(input_string=>input, key_string=>key,
   encrypted_string =>str );
   dbms_output.put_line('加密结果为:' || str);
   dbms_obfuscation_toolkit.MD5(input_string=>input ,checksum_string =>str1 );
   dbms_output.put_line('校验和结果为:' || str1);
 end;
/*
dbms_obfscation_toolkit案例
*/

–建立过程send_message

create or replace procedure send_message(message varchar2)
is
flag int ;
key varchar2(16):=1234567899874561;
checksum varchar2(100) ;
encrypted_string varchar2(100);
begin
dbms_obfuscation_toolkit.DESEncrypt(
input_string =>message,
key_string =>key,
encrypted_string =>encrypted_string );
flag := dbms_pipe.create_pipe(‘encrypted_string’) ;
if flag =0 then
dbms_pipe.pack_message(encrypted_string);
flag := dbms_pipe.send_message(‘encrypted_string’);
end if;

dbms_obfuscation_toolkit.MD5(input_string =>message,checksum_string => checksum );
flag := dbms_pipe.create_pipe(‘checksum’) ;
if flag =0 then
dbms_pipe.pack_message(checksum);
flag := dbms_pipe.send_message(‘checksum’);
end if;
end;

–建立过程recieve_message
create or replace procedure recieve_message
is
flag int;
key varchar2(16):=1234567899874561;
encrypted varchar2(100);
decrypted varchar2(100);
sourse_checksum varchar2(100);
dest_checksum varchar2(100);
begin

–接受加密消息
flag:= dbms_pipe.receive_message(‘encrypted_string’);
if flag = 0 then
dbms_pipe.unpack_message(encrypted);
flag:= dbms_pipe.remove_pipe(‘encrypted_string’);
end if;

–接受校验和
flag:= dbms_pipe.receive_message(‘checksum’);
if flag = 0 then
dbms_pipe.unpack_message(sourse_checksum);
flag:= dbms_pipe.remove_pipe(‘checksum’);
end if;

–解压
dbms_obfuscation_toolkit.DESDecrypt(
input_string =>encrypted ,
key_string =>key ,
decrypted_string => decrypted);

–生成校验和
dbms_obfuscation_toolkit.MD5(input_string =>decrypted ,checksum_string =>dest_checksum );

–判断两种校验和是否一致
if trim(dest_checksum) = trim(sourse_checksum) then
dbms_output.put_line(decrypted);
else
dbms_output.put_line(‘数据被破坏……’);
end if;
end;

–调用这个过程
declare
begin
send_message(‘中国你好中国万岁’);
recieve_message;
end;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值