Önceki makalemizde Oracle’ın paketlerinde DBMS_CRYPTO Pakedi üzerine konuşmuş ve iki fonksiyonundan bahsetmiştik bu makalede ise geriye kalan fonksiyonlarını inceleyeceğiz .
HASH, MAC, RANDOMBYTES, RANDOMINTEGER, RANDOMNUMBER
HASH : Hash algoritmalarını kullanarak daha önceki iki fonksiyondan farklı olarak bir anahtar keilimeye ihtiyaç duymaksızın şifreleme işlemi gerçekleştirmekte kullanılabilecek olan bir fonksiyondur.
İhtiyacı olan iki parametre vardır ;
dbms_crypto.hash(
src IN RAW,
typ IN PLS_INTEGER )
RETURN RAW;
SRC => Raw formatına çevrilmiş olan ve şifrelenmek istenen data
TYP=> Sifreleme İşlemi için kullanılacak şifreleme tipi (*)
Örnek :
Declare
v_deger raw(128):=utl_raw.cast_to_raw(‘ORACLE’);
v_sifre_tipi pls_integer;
v_result raw(2048);
Begin
v_sifre_tipi:=dbms_crypto.HASH_MD4;
v_result:=dbms_crypto.hash(v_deger,v_sifre_tipi);
Dbms_output.put_line(v_result);
End;
/
MAC : Mac fonksiyonuda aynı hash fonksiyonu gibi tek yönlü bir şifreleme işlemi sağlar.İkisi arasındaki en belirgin fark MAC fonksiyonu bir anahtar kelimeye ihtiyaç duyar.
Dbms_crypto.mac (
src IN RAW,
typ IN PLS_INTEGER,
key IN RAW
)
RETURN RAW;
SRC => Şifrelenmek istenen datanın raw formatına çevrilmiş hali
TYP => Mac fonksiyonu için seçilecek şifreleme tipi (**)
KEY => Raw formatta verilecek anahtar kelime.
Örnek :
Declare
v_deger raw(128):=utl_raw.cast_to_raw(‘ORACLE’);
v_sifre_tipi pls_integer;
v_anahtar raw(128):= utl_raw.cast_to_raw(‘Anahtarkelime’);
v_result raw(128);
Begin
v_sifre_tipi:=dbms_crypto.HMAC_MD5;
v_result:=dbms_crypto.mac(v_deger,v_sifre_tipi,v_anahtar);
Dbms_output.put_line(v_result);
End;
/
RANDOMBYTES : Bu fonksiyon verilecek olan bir PLS_INTEGER tipindeki veriye karşılık olarak rastgele bir raw tipli veri üretir.
dbms_crypto.randombytes(
number_bytes PLS_INTEGER
)
RETURN RAW;
number_bytes => Verilecek byte boyutu
Örnek :
Declare
deger raw(2048);
Begin
deger:=DBMS_CRYPTO.RANDOMBYTES(15);
dbms_output.put_line(deger);
End;
/
RANDOMINTEGER ve RANDOMNUMBER : Bu iki fonksiyonda parametre almadan çalışan ve geriye randominteger => binary_integer ,randomnumber => Number tipinde sayı değerleri dönen fonksiyonlardır.
Örnek :
begin
dbms_output.put_line(dbms_crypto.randomnumber);
dbms_output.put_line(dbms_crypto.randominteger);
end;
/
(*) Aşağıdaki metodlar kullanılabilir.
İsim | Data Tipi | Değeri |
Hash fonksiyonları için Şifreleme metodları | ||
HASH_MD4 (128 bit hash) | PLS_INTEGER | 1 |
HASH_MD5 (128 bit hash) | PLS_INTEGER | 2 |
HASH_SH1 (160 bit hash) | PLS_INTEGER | 3 |
(**) Aşağıdaki metodlar kullanılabilir
İsim | Data Tipi | Değeri |
MAC fonksiyonları için Şifreleme metodları | ||
HMAC_MD5 (128 bit hash) | PLS_INTEGER | 1 |
HMAC_SH1 (160 bit hash) | PLS_INTEGER | 2 |