Python ile Hash doğrulaması nasıl yapılır?

Kullanıcı bir Hash girecek, diyelim ki hashimiz bu olsun:

  • SHA1: 3f3ba996e7d8e0b15d911180682093cd8fe6b805

Kullanıcı bu Hash’i girer, ardından program kullanıcıya dosyanın dizinini sorar. Ardından dosyanın Hash’ini alır. Bunları karşılaştırır ve buna göre kullanıcıya geribildirim verir.

Bu nasıl yapılabilir?

hashlib modülünü araştırabilirsin. Dosyayı binary (rb) olarak okuyarak hash’ini alabilirsin.

2 Beğeni
from hashlib import md5, sha1, sha256, sha384, sha512

BLOCKSIZE = 131072 # 128MB

def get_filehash(path, algorithm):
    if algorithm == 'md5':      
        hasher = md5()
    elif algorithm == 'sha1':
        hasher = sha1()
    elif algorithm == 'sha256':
        hasher = sha256()
    elif algorithm == 'sha384':
        hasher = sha384()
    elif algorithm == 'sha512':
        hasher = sha512()
    else:
        raise UnboundLocalError('Wrong algorithm value! Algorithms: md5, sha1, sha256, sha384, sha512')

    with open(path, 'rb') as file:
        buff = file.read(BLOCKSIZE)
        while len(buff) > 0:
            hasher.update(buff)
            buff = file.read(BLOCKSIZE)
    return hasher.hexdigest()

Problemi şu şekilde bir fonksiyon oluşturarak çözdüm. İsteyen inceleyip kullanabilir.

3 Beğeni

Güzel olmuş, eline sağlık.

ValueError daha doğru olur.

1 Beğeni

else kısmını boş bıraktığımda yanlış argüman girince bu hatayı veriyor. UnboundLocalError tam olarak ne için kullanılıyor?

UnboundLocalError hatasını yorumlayıcı, bir fonksiyon içerisindeki bir değişken henüz tanımlanmadan önce kullanılmaya çalışılırsa veriyor. Bu hata fonksiyonun kendisindeki bir probleme işaret ediyor, sizin bu tür bir hatayı fonksiyonu kullanan kişiye vermeniz doğru değil.

1 Beğeni