Mit der Methode ARGON2ID kann ich Passwörter in Python erzeugen und in PHP verifizieren oder in Python3 erzeugen und in PHP verifizieren.
Statt Anleitung: Mein Test
Hm. Beim Python-Teil hab ich von mir selbst falsch abgeschrieben... Es fehlen Klammern hinter PasswordHasher.
Dazu kommt dann noch: Die PHP-Funktion
password_verify($hash, PASSWORD_ARGON2ID )
liefert für die so erzeugten Hashes ein true
, was andeutet das diese zu schwach sind.
Mist!
Aber in den Tiefen des Handbuchs der wohl von Support lebenden Hersteller von argon2-cffi (Version jetzt 21.3.0) fand ich dann den Hinweis, dass ich deren argon2.PasswordHasher()
anders initialisieren kann…
Mit
Python:
# pip install argon2-cffi nicht vergessen!
import argon2
time_cost = 4 #Default wäre 3, mehr ist stärker
memory_cost = 65536 #mehr wäre stärke
parallelism = 1 #Default wäre 4, weniger ist auf der eigenen Maschine
# „stärker“ (verlangsamt die Erzeugung/Verifizierung)
#(Hacker beachten das aber nicht, wenn diese mit
#eigenen Programmen erbeutete Hash knacken wollen)
hash_len = 32 #mehr (→längerer Hash) wäre stärker, 64 funktioniert…
salt_len = 22 #Default wäre 16, andere sehen 22 als besser an
encoding = 'utf-8'
passwordHasher = argon2.PasswordHasher(
time_cost,
memory_cost,
parallelism,
hash_len,
salt_len,
encoding
)
passwordHasher.hash("correct horse battery staple")
wird dann ein hash generiert, den dann in PHP die Funktion password_verify($hash, PASSWORD_ARGON2ID )
akzeptiert, also false
liefert.
Dieses Problem ist also erst einmal gelöst. PHP kann man übrigens nach Konstanten fragen:
PASSWORD_ARGON2_DEFAULT_MEMORY_COST «65536»
PASSWORD_ARGON2_DEFAULT_TIME_COST «4»
PASSWORD_ARGON2_DEFAULT_THREADS «1»
…
Da fehlt nur die Länge des Salts.