21 Haziran 2016 Salı

ahmetmelihbasbug.net Açıldı. my website is opened.

Hi everyone. My new website is opened. Actually I had before but it was closed. Now it's come back. Efsane geri döndü!. You can use my website with multilingual. English, Ofcourse Turkish and Spanish. You just need to click flags of language.


Websitem açıldı. Websitemi İngilizce , Türkçe, İspanyolca takip edebilirsiniz. Ahmet Melih Başbuğ iftarla takdim eder.

www.ahmetmelihbasbug.net


For English press 9.. Şaka Şaka For English: www.ahmetmelihbasbug.net/anasayfa?dil=en
Aslında 9 a dokununca İngilizce olsa :D belki yapmışımdır.
For Spanish: www.ahmetmelihbasbug.net/anasayfa?dil=es



7 Haziran 2016 Salı

Oracle'da Acil, Hızlı, Basit bir dbms_crypto ile Veri Şifreleme ve Deşifreleme Fonksiyonu



        Yine bir danışmanlık ziyaretimde önemli bir özel firmadayız. Benden verileri istenildiği zaman şifreleyen, istenildiği zaman şifre çözen ve aynı zamanda şifre ile anahtarı da yollanmasını yapabilen bir fonksiyon istediler. Bende Yaptım! Sırf blog sitemde yazı olsun, sizlerde gelip ziyaret edin, bakın, bilgilenin diye bu acil olarak hazırladığım basit fonksiyonları paylaşıyorum. Örneklidir.


Şifreleme Fonksiyonu;
CREATE OR REPLACE FUNCTION sifrele (p_gnl_data in VARCHAR2, p_gnl_key IN VARCHAR2) RETURN RAW IS p_gnl_result RAW(2048);
BEGIN
     p_gnl_result := dbms_crypto.encrypt(src => utl_raw.cast_to_raw(p_gnl_data), typ => DBMS_CRYPTO.DES_CBC_PKCS5, key => utl_raw.cast_to_raw(p_gnl_key));
      RETURN(p_gnl_result);
END;
Deşifreleme fonksiyonu;

CREATE OR REPLACE FUNCTION sifrecoz (p_gnl_rawdata in RAW, p_gnl_key IN VARCHAR2) RETURN VARCHAR2 IS p_gnl_result VARCHAR2(2048);
BEGIN
     p_gnl_result := dbms_crypto.decrypt
 ( src => p_gnl_rawdata,
typ => DBMS_CRYPTO.DES_CBC_PKCS5,
key => utl_raw.cast_to_raw(p_gnl_key) );
      RETURN(utl_raw.cast_to_varchar2(p_gnl_result));
END;

Burada şifrelenecek veri ve anahtar varchar olarak fonksiyona yollanmaktadır. Şifre çözme için ise şifreli veri RAW olarak yollanmalıdır. Şifrelenen veri RAW formatta gelmektedir. 2048 olmasının nedeni, Canımın istediğinden dolayıdır. Siz veri boyutuna göre ayarlayacaksınız. Ama RAW'a çevrilen verilerin boyutu büyümektedir. Ona göre. Anahtar ise yine VARCHAR. şifre çözümün sonucunda VARCHAR veri gelmektedir.

Örnekler ise;

SQL> select p_gnl_encrypt('a123aab121-12sa','abcdefg12') sifrele from dual;
sifrele
-------------------------------------------
ECF692DE128241E3B93C1916F07BA21A
SQL> select p_gnl_decrypt('ECF692DE128241E3B93C1916F07BA21A','abcdefg12') sifrecoz from dual;
sifrecoz
-------------------------------------------
a123aab121-12sa
Eğer şifreleme sonucu VARCHAR gönderilmesini istiyorsanız ve deşifrelerken, şifreli VARCHAR'ı yollamak istiyorsanız;

CREATE OR REPLACE FUNCTION p_gnl_encrypt (p_gnl_data in VARCHAR2, p_gnl_key IN VARCHAR2) RETURN VARCHAR2 IS p_gnl_result VARCHAR2(2048);
BEGIN
     p_gnl_result := dbms_crypto.encrypt(src => utl_raw.cast_to_raw(p_gnl_data), typ => DBMS_CRYPTO.DES_CBC_PKCS5, key => utl_raw.cast_to_raw(p_gnl_key));
      RETURN(utl_raw.cast_to_varchar2(p_gnl_result));
END;
/
 
CREATE OR REPLACE FUNCTION p_gnl_decrypt (p_gnl_rawdata in VARCHAR2, p_gnl_key IN VARCHAR2) RETURN VARCHAR2 IS p_gnl_result VARCHAR2(2048);
BEGIN
     p_gnl_result := dbms_crypto.decrypt  ( src => utl_raw.cast_to_raw(p_gnl_rawdata), typ => DBMS_CRYPTO.DES_CBC_PKCS5, key => utl_raw.cast_to_raw(p_gnl_key) );
      RETURN(utl_raw.cast_to_varchar2(p_gnl_result));
END;
/
 Örnek istiyorsanız;

SQL> select p_gnl_encrypt('a123aab121-12sa','abcdefg12') sifrelenmis from dual;
sifrelenmiş
--------------------------
���A� �

SQL> select p_gnl_decrypt(p_gnl_encrypt('a123aab121-12sa','abcdefg12'),'abcdefg12') desifrelenmis from dual;
desifrelenmis
-----------------------------
a123aab121-12sa

Saygılar Sevgiler...

DUYURU: Yakında tüm yazılarımı, resimlerimi, koleksiyonumu, hakkımda bilgileri tek bir adresten yani www.ahmetmelihbasbug.net  adresinden görebileceksiniz... www.ahmetmelihbasbug.net yakında açılıyor.