Hashlib base64 ile şifre çözme

İyi akşamlar elimde söyle bir kod parçası var istediğim metni şifreleyebiliyorum fakat şifreleri nasıl çözüp istediğim metni alırım

import base64

password = "şifre"
sifrelenmis= (base64.b64encode(hashlib.sha256(hashlib.sha256(password.encode()).hexdigest().encode() + b'\xf7\x1a\xa6\xde\x8f\x17v\xa8\x03\x9d2\xb8\xa1V\xb2\xa9>\xddC\x9d\xc5\xdd\xceV\xd3\xb7\xa4\x05J\r\x08\xb0').digest()).decode('utf-8'))
print(sifrelenmis)

Cevap :Tersine Mühendislik

Daha açıklayıcı cevap mı versen acaba ?

hashlib kullanarak oluşturduğunuz karmaşık bir stringi aslında geri alamazsınız diye düşünüyorum. base64.b64encode için durum farklı, onun decode fonksiyonu var. Ama hashlib için siz bir tane decoder yazmalısınız, ancak bu da sadece tanımlı olan karmaşıklaştırılmış stringler için geçerli olabilir.

Ayrıca sizin araya eklediğiniz ve herhangi bir değişkene eşitlemediğiniz o bayt verisinin geriye nasıl alınacağını bilmiyorum.

Bir stringi karmaşıklaştıracağınız zaman stringi ve karmaşıklaşmış stringi bir sözlüğe ekleyebilirsiniz. Karmaşık stringi geri dönüştüreceğiniz zaman bu sözlüğü kullanabilirsiniz.

import base64
import hashlib

hash_map = {}


def hash_str(string):
    hash_map[string] = hashlib.sha256(string.encode("utf-8")).hexdigest()
    return hash_map[string]


def unhash_str(hashed_string):
    for k, v in hash_map.items():
        if hashed_string in v:
            return k
        
    
original = "hello"
hashed = hash_str(original)

print(unhash_str(hashed))


sifre = "merhaba"
encoded_by_b64_and_hashed = hash_str(base64.b64encode(sifre.encode("utf-8")).decode("utf-8"))
decoded = base64.b64decode(unhash_str(encoded_by_b64_and_hashed).encode("utf-8")).decode("utf-8")
print(encoded_by_b64_and_hashed)
print(decoded)

Hash fonksiyonları tek yönlüdür, siz niçin böyle bir şey yapmak istiyorsunuz?

bu modülü bilmedigimden soruyorum madem durum böyle bunun amacı nedir şifrelemek ne işe yarar

Tabii ki de fonksiyonun çıktısını kullanarak verilen giriş değerine erişilmesini engellemek için kullanılıyor.

1 Beğeni

Elindeki kod metni sifrelemiyor, hash’ini aliyor. Cozecek bir sifre yok, metni geri alamazsin.