oracle 字段加密解密方法

2021-08-14 11:37:53 字數 2504 閱讀 3013

要用到decrypt方法對資料解密和encrypt方法加密

1.首先通過sys使用者登入到oracle資料庫,因為我們要通過這個使用者來設定一些高階許可權

grant execute on dbms_crypto to username;

這句是為了能讓使用者使用dbms這個方法,能夠讓我們sql語句種直接簡單的呼叫就可以了,否則我們將無法使用加密和解密,資料庫也會報錯,不過我忘了是什麼錯誤了,username就是你通過程式訪問資料庫時的使用者名稱,

2.然後要建立一張表,這張表裡就乙個欄位是用來存放乙個key值,這個key值是要在接下來建立的方法種使用到的固定值

create table keyinfomtbl(

keycode raw(32) not null,

constraint keyinfomtbl_p primary key (

keycode)

using index)/

insert into keyinfomtbl values ( dbms_crypto.randombytes (32) )

通過這個兩個sql語句建立表, 並給表插入一條資料,注意欄位的型別是raw型的,這個也是oracle資料庫種加密要用的字段型別。

3.就是要建立乙個方法,要對資料進行加密處理了,這也是關鍵的乙個部分,我以前在網上看到很多文章來說明這個過程,但試了很多都不好用,我現在給出的例子完全好用,這也是我現在做的專案中使用的

create or replace function encrypt

(input_string varchar2

)return raw

isencrypted_raw        raw (100);

key_bytes_raw        raw (32);

encryption_type      pls_integer :=

dbms_crypto.encrypt_aes256

+ dbms_crypto.chain_cbc

+ dbms_crypto.pad_pkcs5;

begin

select keycode into key_bytes_raw from keyinfomtbl;

encrypted_raw := dbms_crypto.encrypt

(src => utl_i18n.string_to_raw (input_string,  'al32utf8'),

typ => encryption_type,

key => key_bytes_raw

);return encrypted_raw;

end;

4.就是要建立乙個解密的方法了,

create or replace function decrypt

(input_raw raw

)return varchar2

isoutput_string        varchar2(100);

decrypted_raw        raw (100);

key_bytes_raw        raw (32);

encryption_type      pls_integer :=

dbms_crypto.encrypt_aes256

+ dbms_crypto.chain_cbc

+ dbms_crypto.pad_pkcs5;

begin

select keycode into key_bytes_raw from keyinfomtbl; 

decrypted_raw := dbms_crypto.decrypt

(src => input_raw,

typ => encryption_type,

key => key_bytes_raw

);output_string := utl_i18n.raw_to_char (decrypted_raw, 'al32utf8');

return output_string;

end;

/5.我現在要給出乙個可以應用這個兩個加密和解密的小的例子,可以很明顯的看到是如何應用的

你可以通過這個sql語句看一下我們在keyinfomtbl表種存的那個字段值是什麼 

select utl_i18n.raw_to_char (keycode, 'al32utf8') from keyinfomtbl;

create table testpw

(password raw(20))/

使用插入的時候只要用 encrypt() 就可以將你的字串加密了

insert into testpw values ( encrypt('nvgwngw383$') );

你可以通過這個sql語句看到加密以後的資料效果

select utl_i18n.raw_to_char (password, 'al32utf8') from testpw;

通過下面的sql語句就可以將資料進行解密處理

select decrypt(password) from testpw;

C 加密解密方法

1 方法一 不可逆加密 public string encryptpassword string passwordstring,string passwordformat elseif passwordformat md5 return encryptpassword 2 方法二 可逆加密 publ...

AES加密解密方法

aes加密解密方法 加密方法 param data 要加密的資料 param key 加密key param iv 加密iv return 加密的結果 throws exception public static string aesencode string data,string key,str...

系統加密方法,解密方法

系統加密方法 param string data 要加密的字串 param string key 加密金鑰 param int expire 過期時間 單位 秒 return string author 麥當苗兒 function think encrypt data,key expire 0 st...