Üye Kayıt Üye Giriş

ORACLE DBMS_CRYPTO Pakedi (Bölüm 1) ;


ORACLE DBMS_CRYPTO Pakedi (Bölüm 1) ;

 

Oracle veritabanı versiyonlarından 10gR1 ile birlikte gelmekte olan ve temen işi adındanda anlaşılacağı gibi şifreleme olan bir pakettir.Bu makalemizde de bu pakedin içeriği ve kullanım örneklerini sizinle paylaşacağım.

DBMS_CRYPTO paketi  içerisinde

ENCRYPT, DECRYPT,  HASH, MAC, RANDOMBYTES, RANDOMINTEGER, RANDOMNUMBER

olmak üzere yedi tane fonksiyon bulunur.

ENCRYPT : Bu fonksiyon  verilen bir datayı şifrelemek için kullanılır.Şifreleme işlemi sırasında verilen datanın RAW formatına çevrilerek verilmesi gerektiğinide unutmamak gerekir.

dbms_crypto.encrypt  (
src IN RAW,
typ IN PLS_INTEGER,
key IN RAW,
iv  IN RAW DEFAULT NULL   )  RETURN RAW;

 

SRC => Şifrelenmek istenen değerin raw formatına çevrilmiş hali.( örneğin UTL_I18N.STRING_TO_RAW fonksiyonu kullanılabilir)

TYP=> dbms_crypto pakedi içindeki sabit değerlerin kullanımıyla verilebilecek ve şifreleme modu olarak kullanılacak parametredir.(Algoritma sabitleri (*) )

KEY=> Şifreleme esnasında kullanılacak anahtar kelimenin RAW formatına çevrilmiş hali.

IV=> Opsiyonel olarak verilebilecek ikinci bir şifreleme modudur.

Ö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.des_cbc_pkcs5;

v_result:=dbms_crypto.encrypt(v_deger,v_sifre_tipi,v_anahtar);

Dbms_output.put_line(v_result);

End;

/

DECRYPT : Buı fonksiyon şifrelenmiş olarak tutulan dataları tekrar eski okunabilir formatına çevrilmek için kullanılır.Encript fonksiyonundaki parametrelerle aynı parametrelere  sahiptir.

 

SRC => Şifrelenmiş değerin raw formatına çevrilmiş hali.( örneğin UTL_I18N.STRING_TO_RAW fonksiyonu kullanılabilir)

TYP=> dbms_crypto pakedi içindeki sabit değerlerin kullanımıyla verilebilecek ve şifreleme modu olarak kullanılacak parametredir.(Algoritma sabitleri (*) )

KEY=> Şifreleme esnasında kullanılan anahtar kelimenin RAW formatına çevrilmiş hali.

IV=> Opsiyonel olarak verilebilecek ikinci bir şifreleme modudur.

 

Note : BLOB ve CLOB alanlar için bu iki fonksiyonun prosedür tipleride bulunur aralarında tek bir parametre farkı vardır. DST => Bu in out bir parametre olup geri dönülecek olan değerdir.

 

Örnek :

Declare

v_deger raw(128):=’B065E3DB5B81A604′;

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.des_cbc_pkcs5;

v_result:=dbms_crypto.decrypt(v_deger,v_sifre_tipi,v_anahtar);

Dbms_output.put_line(utl_raw.cast_to_varchar2(v_result));

End;

/

(*) Aşağıdaki şifreleme metodlar kullanılabilir

İsim Veri tipi Sayı değeri
Block Cipher Algorithms
ENCRYPT_DES (56 bit) PLS_INTEGER 1; — 0×0001
ENCRYPT_3DES_2KEY (128 bit) PLS_INTEGER 2; — 0×0002
ENCRYPT_3DES PLS_INTEGER 3; — 0×0003
ENCRYPT_AES PLS_INTEGER 4; — 0×0004
ENCRYPT_PBE_MD5DES PLS_INTEGER 5; — 0×0005
ENCRYPT_AES128 (128 bit) PLS_INTEGER 6; — 0×0006
ENCRYPT_AES192 (192 bit) PLS_INTEGER 7; — 0×0007
ENCRYPT_AES256 (256 bit) PLS_INTEGER 8; — 0×0008
ENCRYPT_RC4 (Stream Cipher) PLS_INTEGER 129; — 0×0081
Block Cipher Chaining Modifiers
CHAIN_CBC (Cipher Block Chaining) PLS_INTEGER 256; — 0×0100
CHAIN_CFB (Cipher Feedback) PLS_INTEGER 512; — 0×0200
CHAIN_ECB (Electronic cookbook) PLS_INTEGER 768; — 0×0300
CHAIN_OFB (Output Feedback) PLS_INTEGER 1024; — 0×0400
Block Cipher Padding Modifiers
PAD_PKCS5 (Complies with PKCS #5) PLS_INTEGER 4096; — 0×1000
PAD_NONE (No padding) PLS_INTEGER 8192; — 0×2000
PAD_ZERO (Pad with zeros) PLS_INTEGER 12288; — 0×3000
PAD_ORCL PLS_INTEGER 16384; — 0×4000
Block Ciphers Suites
DES3_CBC_PKCS5 PLS_INTEGER ENCRYPT_3DES
+ CHAIN_CBC
+ PAD_PKCS5;
DES3_CBC_PKCS5 PLS_INTEGER ENCRYPT_3DES
+ CHAIN_CBC
+ PAD_PKCS5;
AES_CBC_PKCS5 PLS_INTEGER ENCRYPT_AES
+ CHAIN_CBC
+ PAD_PKCS5;

 

Parametreye değer olarak gönderilebilir.

 

Bilgisayar Dershanesi Ders Sahibi;
Bilgisayar Dershanesi

Yorumlar

Yorum Yapabilmek İçin Üye Girişi Yapmanız Gerekmektedir.

ETİKETLER