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)