Ich dachte mir, das ist doch einfach, viel Speicher zu verbraten... Aber so richtig einfach dann doch wieder nicht. Hier mal ein Versuch:
Code: Alles auswählen
#!/usr/bin/python3
# coding: UTF-8
import hashlib
import time
def not_argon2(hash_func, password, salt, rounds, multiplier):
buffer = b""
for _ in range(rounds):
buffer += ( hash_func(password + salt + buffer).digest() * multiplier)
print("Buffer length: %.2f MBytes" % (len(buffer)/1024/1024))
return hashlib.sha224(buffer)
if __name__ == "__main__":
print("Calculate...")
start_time = time.time()
hash = not_argon2(
hash_func = hashlib.sha512,
password = b"Not a secret password",
salt = b"not random",
rounds = 100,
multiplier = 10000,
)
duration = time.time() - start_time
print("Hash: %r created in: %.2fsec" % (hash.hexdigest(), duration))
Ausgabe:
Code: Alles auswählen
Calculate...
Buffer length: 61.04 MBytes
Hash: 'ac6a6fc67ed398bc97f7b42fab49b0f683e7f5cd2fbb685f373a5811' created in: 15.41sec