24 Eylül 2015 Perşembe

Python3 Hashlib Kütüphanesi



Açıklama:
hashlib kütüphanesi verilerimizi farklı algoritmalarda şifrelememizi sağlayan bir kütüphanedir.Kullanımı oldukça kolaydır.



Kullanım:

İlk önce kütüphanemizi içe aktarmamız gerekecek.

import hashlib

Kütüphanemizin bize sunduğu şifreleme algoritmaları basitten karmaşığa şunlardır.


md5
sha1
sha224
sha256
sha384
sha512


Bu algoritmaların kullanımı birbiriyle aynıdır.Hemen bir verimizi şifreleyelim.


şifrelenecek = "furkan" #şifrelenecek metnimiz.
şifreleyici = hashlib.md5() #şifreleyicimiz(md5() yerine yukarıda bulunan algoritmalardan istediğimizi yazabiliriz.)
şifreleyici.update(şifrelencek.encode("utf-8")#verimizi encode edip şifreledik.

Böylelikle basit bir şekilde verimizi şifreledik.İlk önce metnimizi oluşturduk.Daha sonra şifreleyicimizi seçtik ve ardından verimizi update() fonksiyonuyla şifreledik.Burada dikkat edilmesi gereken nokta verimizi fonksiyonun içinde encode etmemiz.Eğer şöyle bir kullanım yapsaydık:


şifrelenecek = "furkan".encode("utf-8")
şifreleyici = hashlib.md5()
şifreleyici.update(şifrelencek)

Kodlarımız hata verecekti:



Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    şifreleyici.update("şifrelencek")
TypeError: Unicode-objects must be encoded before hashing

Şifrelemenin daha basit ve kısa yolu ise verimizi direkt olarak sınıfa parametre vermektir.


şifreleyici = hashlib.md5("veri".encode("utf-8"))


Verimizi şifreledik.Peki ya şifrelenmiş hali nerede ?

İşte burada şu iki fonksiyon kullanıyoruz.


şifreleyici.digest() #verimizin şifrelenmiş halini byte cinsinden döndürür yani
#b'R\xd8\x9d%\xd9Sy\x13\xf6\xdfver9\x9cD'

şifreleyici.hexdigest() #verimizin şifrelenmiş halini str olarak döndürür.
#'52d89d25d9537913f6df766572399c44'
Şifrelenmiş verilerin kırılması oldukça zordur.Ancak deneme ile bulabilirsiniz.Elimizde şifrelenmiş bir veri var diyelim ve bunu çözmek istiyoruz.O zaman olabileceğini tahmin ettiğimiz verinin şifrelenmiş halini şifreli veri ile karşılaştırabiliriz.Eğer veriler harfiyen uyuyorsa bulduk demektir.

Web üzerinde çalışan md5 vb. şifre çözücüler de bu mantık üzerine çalışmakta.Milyarlarca kelimenin şifrelenmiş halini barındıran bir veritabanına sahipler ve girdiğiniz veriyi bu veritabanında kontrol ederek size sonuç veriyorlar.

Bu yazımızda hashlib kütüphanesini not ettik.
Not yazmaya devam edeceğim takipte kalın!

2 yorum:

  1. teşekkürler, çok güzel bir yazı olmuş

    YanıtlaSil
  2. şifrelenecek = "furkan" #şifrelenecek metnimiz.
    şifreleyici = hashlib.md5() #şifreleyicimiz(md5() yerine yukarıda bulunan algoritmalardan istediğimizi yazabiliriz.)
    şifreleyici.update(şifrelencek.encode("utf-8")#verimizi encode edip şifreledik.
    /////////////////////////
    burada 3. satırda parantez eksikligi var düzeltin :)

    YanıtlaSil