日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 包 解密,oracle9.1的加密解密包的用法

發布時間:2024/1/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 包 解密,oracle9.1的加密解密包的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

oracle9.1的加密解密包

雙向加密算法

dbms_obfuscation_toolkit.desencrypt

dbms_obfuscation_toolkit.desdecrypt

dbms_obfuscation_toolkit.DES3Encrypt

dbms_obfuscation_toolkit.DES3Decrypt

單向加密算法

dbms_obfuscation_toolkit.md5

具體用法參見以下函數

--MD5加密

create or replace function

encrypt_md5(p_text varchar2) return varchar2 is

begin

--添加RawToHex(UTL_RAW.CAST_TO_RAW())為得是加密后的輸出數據規范些

--input_string必須要有,否則沒有辦法區分到底是調用那個md5

return RawToHex(UTL_RAW.CAST_TO_RAW(dbms_obfuscation_toolkit.MD5(input_string=>p_text)));

end;

--DES加密

create or replace function

encrypt_des(p_text varchar2, p_key varchar2) return varchar2 is

begin

return UTL_RAW.CAST_TO_RAW(dbms_obfuscation_toolkit.DESENCRYPT(input_string => p_text,

key_string => p_key));

end;

--DES解密

create or replace function decrypt_data(p_text varchar2,p_key varchar2) return varchar2 is

v_text varchar2(4000);

begin

dbms_obfuscation_toolkit.DESDECRYPT(

input_string => UTL_RAW.CAST_TO_varchar2(p_text),

key_string => p_key,

decrypted_string=> v_text);

return v_text;

end;

附錄oracle9.2文檔自帶的DES3加密解密實例:

DECLARE

input_string??????? VARCHAR2(16) := 'tigertigertigert';

raw_input?????????? RAW(128) := UTL_RAW.CAST_TO_RAW(input_string);

key_string????????? VARCHAR2(16)? := 'scottscottscotts';

raw_key???????????? RAW(128) := UTL_RAW.CAST_TO_RAW(key_string);

encrypted_raw?????????????? RAW(2048);

encrypted_string??????????? VARCHAR2(2048);

decrypted_raw?????????????? RAW(2048);

decrypted_string??????????? VARCHAR2(2048);

error_in_input_buffer_length EXCEPTION;

PRAGMA EXCEPTION_INIT(error_in_input_buffer_length, -28232);

INPUT_BUFFER_LENGTH_ERR_MSG VARCHAR2(100) :=

'*** DES INPUT BUFFER NOT A MULTIPLE OF 8 BYTES - IGNORING EXCEPTION ***';

double_encrypt_not_permitted EXCEPTION;

PRAGMA EXCEPTION_INIT(double_encrypt_not_permitted, -28233);

DOUBLE_ENCRYPTION_ERR_MSG VARCHAR2(100) :=

'*** CANNOT DOUBLE ENCRYPT DATA - IGNORING EXCEPTION ***';

-- 1. Begin testing raw data encryption and decryption

BEGIN

dbms_output.put_line('> ========= BEGIN TEST RAW DATA =========');

dbms_output.put_line('> Raw input??????????????????????? : ' ||

UTL_RAW.CAST_TO_VARCHAR2(raw_input));

BEGIN

dbms_obfuscation_toolkit.DES3Encrypt(input => raw_input,

key => raw_key, encrypted_data => encrypted_raw );

dbms_output.put_line('> encrypted hex value????????????? : ' ||

rawtohex(encrypted_raw));

dbms_obfuscation_toolkit.DES3Decrypt(input => encrypted_raw,

key => raw_key, decrypted_data => decrypted_raw);

dbms_output.put_line('> Decrypted raw output???????????? : ' ||

UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw));

dbms_output.put_line('>? ');

if UTL_RAW.CAST_TO_VARCHAR2(raw_input) =

UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw) THEN

dbms_output.put_line('> Raw DES3 Encyption and Decryption successful');

END if;

EXCEPTION

WHEN error_in_input_buffer_length THEN

dbms_output.put_line('> ' || INPUT_BUFFER_LENGTH_ERR_MSG);

END;

dbms_output.put_line('>? ');

END;

-- 2. Begin testing string data encryption and decryption

dbms_output.put_line('> ========= BEGIN TEST STRING DATA =========');

BEGIN

dbms_output.put_line('> input string???????????????????? : '

|| input_string);

dbms_obfuscation_toolkit.DES3Encrypt(

input_string => input_string,

key_string => key_string,

encrypted_string => encrypted_string );

dbms_output.put_line('> encrypted hex value????????????? : ' ||

rawtohex(UTL_RAW.CAST_TO_RAW(encrypted_string)));

dbms_obfuscation_toolkit.DES3Decrypt(

input_string => encrypted_string,

key_string => key_string,

decrypted_string => decrypted_string );

dbms_output.put_line('> decrypted string output????????? : ' ||

decrypted_string);

if input_string = decrypted_string THEN

dbms_output.put_line('> String DES3 Encyption and Decryption

successful');

END if;

EXCEPTION

WHEN error_in_input_buffer_length THEN

dbms_output.put_line(' ' || INPUT_BUFFER_LENGTH_ERR_MSG);

END;

dbms_output.put_line('>? ');

END;

不錯的冬冬.共享一下!

總結

以上是生活随笔為你收集整理的oracle 包 解密,oracle9.1的加密解密包的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。