Ich habe jetzt ein neues Programm geschrieben, das sich mit Hashes beschäftigt.
Es beinhaltet 2 Funktionen:
Eine Funktion mit der man einen String mit md5 in den Hash umwandelt und außerdem eine Funktion, die 2 Hashwerte überprüft. Dabei kann unter anderem ein extra Dictionary verwendet werden, das aus Strings besteht, eine Liste, die mehrere Strings beinhaltet und auch die Eingabe von Zusatzzeichen, die an den String angehängt werden können, ist möglich.
Da ich gerne so optimiert wie möglich programmieren will, ist meine erste Frage, ob jemandem entweder Fehler auffallen oder es generelle Verbesserungsvorschläge gibt. Meine zweite Frage ist, wie ich es schaffen kann, das man bei der Funktion check_hash_md5() beispielsweise eine andere krypto Hashfunktion verwenden kann (ohne if,else), welche man vorher als variable übergibt?
So zum Beispiel:
Code: Alles auswählen
import hashlib
def check_hash(dictionary, my_hash, kryp_func):
hash = hashlib.krypfunc(...)
Code: Alles auswählen
import hashlib
import os
def create_hash_md5(plaintext):
hashed = hashlib.md5(plaintext.encode()).hexdigest()
print(hashed)
def check_hash_md5(my_hash, dat = None, dic = None, extra_char = None,
extra_char_ammount = None):
if dat and not dic:
with open (dat, "r") as dic_file:
for line in dic_file:
if extra_char:
for char in extra_char:
current_element = line.strip() + char
hashed_element = hashlib.md5(current_element.encode()).hexdigest()
if hashed_element == my_hash:
print("Plaintext found:", current_element, "\n" + hashed_element)
os._exit(1)
else:
continue
else:
current_element = hashlib.md5(line.strip().encode()).hexdigest()
if current_element == my_hash:
print("Plaintext found:", line.strip(), "\n" + current_element)
os._exit(1)
else:
continue
print("Operation stopped")
elif not dat and dic:
for item in dic:
hashed = hashlib.md5(item.strip().encode()).hexdigest()
if hashed == my_hash:
print("Plaintext found:", item, "\n" + hashed)
os._exit(1)
else:
continue
print("Operation stopped")
else:
return False
my_hash = "64170b387fb14dbfef2a1f85e7726bab" #create_hash_md5("piggishly!")
check_hash_md5(my_hash, "dictionary.txt", None, ["!", "?", ",", ".", "#", ":", ";"])