Oracle的AES加密與解密用法

2022-05-31 18:33:07 字數 2088 閱讀 4780

oracle的aes加密與解密用法

2023年12月11日 11:50:35 iteye_751 閱讀數:428

--加密字串

create or replace function des3_enc

(input varchar2

)return varchar2

isi_data varchar2(128);

v_in varchar2(255);

i_key varchar2(128);

raw_input raw(128) ;

key_input raw(128) ;

decrypted_raw raw(2048);

begin

--判斷是否為空

if input is null then

return null;

else if input='' then

return '';

end if;

end if;

--key,至少要16位

i_key:= 'abcdef0123456789';

--要加密資訊

i_data:= input;

v_in := rpad(i_data,(trunc(length(i_data)/8)+1)*8,chr(0));

--字元轉成raw

raw_input := utl_raw.cast_to_raw(v_in);

key_input := utl_raw.cast_to_raw(i_key);

dbms_obfuscation_toolkit.des3encrypt(input => raw_input,key => key_input,encrypted_data => decrypted_raw);

--加密資訊轉成字元

return to_char(rawtohex(decrypted_raw));

end des3_enc;

--解密字串

create or replace function des3_dec

(input varchar2

)return varchar2

isi_data varchar2(2048);

i_key varchar2(2048);

v_in varchar2(2048);

begin

--判斷是否為空

if input is null then

return null;

else if input='' then

return '';

end if;

end if;

--key,至少要16位

i_key:= 'abcdef0123456789';

--要解密的資訊

i_data := input;

dbms_obfuscation_toolkit.des3decrypt(input_string => utl_raw.cast_to_varchar2(i_data),key_string => i_key,decrypted_string=> v_in);

v_in := rtrim(v_in,chr(0));

--返回解密資訊

return v_in;

end des3_dec;

--觸發器,用於在增加、修改時自動加密字段,查詢時需要手動呼叫解密函式進行解密。

create or replace trigger enc_trigger

before insert or update on scott.dept

for each row

begin

select des3_enc(:new.dname) into :new.dname from dual;

end enc_trigger;

--使用示例:

insert into dept values (50,'test','test');

commit;

select des3_dec(dname) from dept where deptno=50;

Aes加密解密

加密時 先對string進行utf8解析成陣列 對陣列進行加密 對加密結果用base64解析成string。那麼揭秘時,對字串的解析方式是必須要 倒 過來的,就成這樣子了 解密時 先對string進行base64解析成陣列 對陣列進行解密 對解密結果用utf8解析成string using syst...

Python 的AES加密與解密

aes加密方式有五種 ecb,cbc,ctr,cfb,ofb python 在windows下使用aes時要安裝的是pycryptodome 模組pip install pycryptodome python 在linux下使用aes時要安裝的是pycrypto模組pip install pycry...

Python 的AES加密與解密

aes加密方式有五種 ecb,cbc,ctr,cfb,ofb python 在windows下使用aes時要安裝的是pycryptodome 模組 pip install pycryptodome python 在linux下使用aes時要安裝的是pycrypto模組 pip install pyc...