Başlangıç > Database, Oracle, PL/SQL > pl/sql de md5 kullanımı

pl/sql de md5 kullanımı


Merhabamd5
Size daha önce pl/sql de base64 encode & decode kullanımı anlatmıştım. Bugün base4 şifrelemesinden farklı olarak tek yönlü çalışan md5 veril şifreleme işlemini pl/sql de kullanımını anlatacağım. MD5 (Message-Digest algorithm 5), veri bütünlüğünü test etmek için kullanılan, Ron Rivest tarafından 1991 yılında geliştirilmiş bir kriptografik özet (tek yönlü şifreleme) algoritmasıdır. Girdi verinin boyutundan bağımsız olarak 128 bitlik özetler üretir.
Base64 ile verilerimi çift yönlü olarak şifreleyip,çözebiliyorduk. Md5 işleminde farklı olarak veriler tek yönlü şifrelendiği için geri çözme işlemi bulunmamaktadır, bu sebeple kontrol işlemlerinde kontrol verisinide md5 ile şifreleyip iki şifreleri verinin kontrolünü yapmalıyız. Örnek md5 verilermizi oluşturacak olan fonksiyonumuzu hazırlayalım.

create or replace function CreateMd5(vDeger in varchar2) return varchar2 is
  vMd5InRaw  raw(32767);
  vMd5OutRaw raw(16);
begin

  vMd5InRaw := utl_raw.cast_to_raw(vDeger);

  dbms_obfuscation_toolkit.MD5(input => vMd5InRaw, checksum => vMd5OutRaw);

  return vMd5OutRaw;

end CreateMd5;

İşlem yapacak olan fonksiyonumuz hazır. Şimdi kontrol işlemlerini yapmak için bir tablo oluşturalım ve içerisine hem normal hemde md5 ile şifrelenmiş verileri ekleyip fonksiyonumuzu kullanarak bu tablodan eşlenen kayıtları bulalım.

create table md5tablo(
  id number,
  normaldeger varchar2(100),
  md5deger varchar2(1000)
);

Tablomuz hazır şimdi içerisine kayıt ekleyelim.

declare
  cursor c is
    select rownum from dual connect by rownum <= 10;

  vDeger md5tablo.normaldeger%type;
  vMd5   md5tablo.md5deger%type;
begin
  for r in c loop
    vDeger := r.rownum || '. değer';
    vMd5   := CreateMd5(vDeger);
    insert into md5tablo
      (id, normaldeger, md5deger)
    values
      (r.rownum, vDeger, vMd5);
  end loop;
  commit;
end;

Tablomuzdaki değerler aşağıdaki gibi olacaktır.

ID NORMALDEGER MD5DEGER
1 1. değer A8E205229129E604F8920C08771474AC
2 2. değer 5654A3F6DF25CBC3218F9078616A7C5E
3 3. değer BB2D5DA75C426590888AB339CCA5F0FD
4 4. değer E0C3AA020F339038098EB61E931B4A33
5 5. değer 5E782B5092DEDAC244C4DFFA3573A698
6 6. değer 0274B6E04CF8548B62C1ED73CA4266D3
7 7. değer 592AFE668D43A02DE8C2D31B69613D58
8 8. değer EC08FDAD9D97656E30FCCB700EA5A909
9 9. değer F8AE7F1E9B1A0139E13AF66E20AAE0FC
10 10. değer AEFF845FA5FE72CD64DD256573B0DA53

Gördüğünüz gibi artık elimizde bazı değerler ve bunlara ait md5 kodları mevcut. Şimdi bu tablodan istediğimiz değeri m5 alanı üzerinden kontrol etmek için md5 değerini çözmeyeceğiz sadece kontrol verimizi md5 ile şifreleyip iki şifreli veriyi kontrol edeceğiz.

select * 
  from md5tablo
 where md5deger=CreateMd5('2. değer');
ID NORMALDEGER MD5DEGER
2 2. değer 5654A3F6DF25CBC3218F9078616A7C5E

Yukarıdaki sorgu sonucunda “2. değer” olan kaydımızı bulmuş olduk. Bir tablomuzda şifreleri sakladığımızı düşünürsek doğru şifre gelip gelmediğini bu yöntemlede kontrol edebiliriz. Kullanıcının şifresi ters yönlü olarak çözülemeyeceği için database ortamınad isteyen hiç kimse bu şifreyi çözemediğinden güvenlik sağlanmış olur. Tek işlem yukardaki gibi benzer işlemler yaparak doğru şifre gelip gelmediğini velen veriyi de md5 ile şifreleyip kontrol etmektedir.

Kolay gelsin.

Reklamlar
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: