用SQL語言建立AES加解密的儲存過程

2021-07-16 12:38:02 字數 2151 閱讀 7903

美國國家標準技術研究所在2023年發布了高階加密標準(aes)。aes是乙個對稱分組密碼演算法,旨在取代des成為廣泛使用的標準。

aes加解密的流程圖如下:

實現aes加解密的儲存過程**如下:

-- 加密

create or replace function fun_aesencrypt(

v_str varchar2 ,

v_key varchar2

)return varchar2

as v_key_raw raw(128);

v_str_raw raw(512);

v_return_str varchar2(512);

v_type pls_integer ;

begin

v_key_raw := utl_i18n.string_to_raw(v_key,'utf8') ;

v_str_raw := utl_i18n.string_to_raw(v_str,'utf8') ;

v_type := dbms_crypto.encrypt_aes256+dbms_crypto.chain_cbc+dbms_crypto.pad_pkcs5 ;

v_str_raw := dbms_crypto.encrypt(src => v_str_raw , typ => v_type, key => v_key_raw) ;

v_return_str := rawtohex(v_str_raw);

return v_return_str;

end;

grant execute on dbms_crypto to welf;

update operator a set a.loginname = utl_raw.cast_to_varchar2(utl_encode.base64_encode(fun_aesencrypt(a.loginname,'0123456789abcdef0123456789abcdef')))

where a.loginname is not null;

update customer a set a.mobile = utl_raw.cast_to_varchar2(utl_encode.base64_encode(fun_aesencrypt(a.mobile,'0123456789abcdef0123456789abcdef')))

where a.mobile is not null;

update t_order_info a set a.phone_no =utl_raw.cast_to_varchar2(utl_encode.base64_encode(fun_aesencrypt(a.phone_no,'0123456789abcdef0123456789abcdef')))

where a.phone_no is not null;

----- 解密

create or replace function fun_decryption(

v_str varchar2 ,

v_key varchar2

)return varchar2

as v_key_raw raw(128);

v_str_raw raw(512);

v_return_str varchar2(512);

v_type pls_integer;

begin

v_key_raw := utl_i18n.string_to_raw(v_key,'utf8');

v_str_raw := hextoraw(v_str);

v_type := dbms_crypto.encrypt_aes256+dbms_crypto.chain_cbc+dbms_crypto.pad_pkcs5;

v_str_raw := dbms_crypto.decrypt(src => v_str_raw , typ => v_type, key => v_key_raw );

v_return_str := utl_i18n.raw_to_char(v_str_raw,'utf8');

return v_return_str ;

end;

基於aes的加解密方案

對前端上送的報文進行解密和驗籤 1 前端上送的報文先進行整體加密,然後把整體加密的資料作為encodefieldvals的值 同時前端一起上送到後端的資料報括整體加密的aeskey 前端請求後端的例子 2 後端獲取encodefieldvals和aeskey的值,使用aeskey對encodefie...

基於openssl的AES加解密

對於加解密,企業常用的有aes和rsa,它們分別是對稱加解密演算法和非對稱加解密演算法的代表,這裡主要封裝了php的一套基於openssl的aes加解密實現類 created by phpstorm.user 小小徐 date 2019 4 21 time 18 11 class baseaes 校...

AES加解密演算法的模式介紹

一般的加密通常都是塊加密,如果要加密超過塊大小的資料,就需要涉及填充和鏈加密模式,文中提到的ecb和cbc等就是指鏈加密模式。這篇文件比較形象地介紹了aes加密演算法中的一些模式 過來。注意,還缺一種ctr的模式。同時在文章的最後,貼出幾對利用ecb and cbc模式得標準演算法得到的碼流串。對稱...