Giriş
Ruby ile kolaylıkla hash ve şifreleme/şifre çözme işlemleri yapabilmekteyiz. Mevcut Ruby alt yapısı ile birçok hash ve şifrelem yöntemi doğrudan desteklenmektedir, bu sayede bu özellikleri kullanabilmek için çok fazla işlem yapmanıza gerek bulunmamaktadır.
Aşağıdaki örnekleri inceleyelim.
MD5 Hash
Hash yöntemlerinden en çok kullanılanı MD5 hash diyebiliriz. MD5 girdiğiniz herhangi bir uzunlukta veriyi 16 byte (128 bit) uzunluğunda bir özete çevirmektedir. Ruby‘de MD5 hashleme işlemi gerçekten çok basit:
# Eklenecek Kütüphaneler require 'rubygems' require 'digest' # MD5 hashlemek istediğimiz veri ham_veri = "Merhaba Dünya!" # Hashleme işlemi hashli_veri = Digest::MD5.hexdigest(ham_veri) # Hash çıktısını ekrana yazdıralım print hashli_veri
Girdiğiniz ham veriyi hashleyip, hex string olarak çıktısını size sundu.
SHA1 Hash
SHA1 ise 20 byte (160 bit) özet oluşturmaktadır:
# Eklenecek Kütüphaneler require 'rubygems' require 'digest' # SHA1 hashlemek istediğimiz veri ham_veri = "Merhaba Dünya!" # Hashleme işlemi hashli_veri = Digest::SHA1.hexdigest(ham_veri) # Hash çıktısını ekrana yazdıralım print hashli_veri
SHA2 Hash
SHA2 hash’de ise 256, 384 ve 512bit özet çıkaran üç farklı seçim mevcuttur:
# Eklenecek Kütüphaneler require 'rubygems' require 'digest' # SHA2 hashlemek istediğimiz veri ham_veri = "Merhaba Dünya!" # 3 farklı tipte SHA2 hashleme işlemi hashli_veri_1 = Digest::SHA2.new(256).hexdigest(ham_veri) hashli_veri_2 = Digest::SHA2.new(384).hexdigest(ham_veri) hashli_veri_3 = Digest::SHA2.new(512).hexdigest(ham_veri) # Hash çıktılarını ekrana yazdıralım puts hashli_veri_1 puts hashli_veri_2 puts hashli_veri_3
Gayet kullanışlı.
Simetrik AES256 Şifreleme
Şifreleme için birçok farklı algoritma kullanılabilir. Biz simetrik AES 256bit şifrelemeden örnek verelim:
# Eklenecek Kütüphaneler require 'rubygems' require 'digest' require 'openssl' # Şifrelemek istediğimiz ham veri ham_veri = "Merhaba!" # Ham anahtar verimiz anahtar_verisi = "Ruby ile kolay şifreleme!" # Kullanacağımız değişkenler sifreli_veri = "" cozulmus_veri = "" anahtar = "" # Şifrelenecek veriyi ekranda gösterelim puts "Şifrelenecek Veri:" + ham_veri # Anahtarımızı oluşturalım, SHA2 256bit kullanmak oldukça mantıklı anahtar = Digest::SHA256.digest(anahtar_verisi) # Şifreleyelim, AES 256bit, CBC modu aes = OpenSSL::Cipher.new('AES-256-CBC') aes.encrypt aes.key = anahtar sifreli_veri = aes.update(ham_veri) + aes.final # Şifreli veriyi ekranda gösterelim, veri base64 kodlamasında olduğundan bir ön işlemden geçirelim puts "Şifreli Veri:" + [sifreli_veri].pack('m') # Şifreyi çözelim aes.decrypt aes.key = anahtar cozulmus_veri = aes.update(sifreli_veri) + aes.final # Çözülmüş veriyi ekranda gösterelim puts "Çözülmüş Veri:" + cozulmus_veri
Sonuç
Ruby ile şifreleme ve hashleme işlemlerini gördük, umarım işinize yarar.
Bir cevap yazın
Yorum yapabilmek için giriş yapmalısınız.