2013-09-30 5 views
6

Wie kann ich manuell ein Passwort für Django generieren? Zum Beispiel in einer anderen Anwendung, aber die gleiche Datenbank wie django .Für Benutzernamen ‚admin‘ Passwort wie diesePython Passwort Generator für Django

pbkdf2_sha256$10000$T0BzrDwfZSrI$pSgvDEam9V9jcdYpYDVkYMMwtSnRrFdf6Aqow82Tjr8= 

Antwort

10

mit ich denke, das vielleicht, was Sie suchen:

Manually managing a user’s password

make_password (Passwort [, Salz, hashers])

Erstellt ein Hash-Passwort in das Format verwendet durch diese Anwendung. Es braucht ein obligatorisches Argument: das Passwort im Klartext. Optional können Sie einen Salz- und einen Hashing-Algorithmus verwenden, wenn Sie die Standardeinstellungen nicht verwenden möchten (erster Eintrag der PASSWORD_HASHERS-Einstellung). Aktuell unterstützte Algorithmen sind: 'pbkdf2_sha256', 'pbkdf2_sha1', 'bcrypt_sha256' (siehe bcrypt mit Django), 'bcrypt', 'sha1', 'md5', 'unsalted_md5' (nur für Abwärtskompatibilität) und ' crypt ', wenn Sie die Crypt-Bibliothek installiert haben. Wenn das Passwort-Argument None lautet, wird ein nicht verwendbares Passwort zurückgegeben (ein Wert, der von check_password() niemals akzeptiert wird).


Ich will zum Glück

Gut für die Verwendung ohne django Funktion schreiben Django ist Open Source, so dass Sie gehen können, und nehmen, was Sie brauchen. The functions source is visible here.

+0

danke, aber diese Methoden mit Django-Anwendung verwendet. Ich möchte schreiben Funktion für die Verwendung ohne Django, etwas wie folgt: http://stackoverflow.com/questions/1306550/calculating-a-sha-hash-with-a-string-secret-key-in-python – saniaxxx26

3

Der am häufigsten (nicht sicherste) Algorithmus für Hashing ist md5. ein paar Ideen von Djangos Passwort-System zu extrahieren kann dieser Code sein:

import hashlib 

def make_password(password): 
    assert password 
    hash = hashlib.md5(password).hexdigest() 
    return hash 

def check_password(hash, password): 
    """Generates the hash for a password and compares it.""" 
    generated_hash = make_password(password) 
    return hash == generated_hash 


>>> hash = make_password('hello123') 
>>> hash 
'f30aa7a662c728b7407c54ae6bfd27d1' 
>>> check_password(hash, 'hello123') 
True 
>>> check_password(hash, 'Hello123') 
False 

Verwenden make_password einen Hash zu generieren und check_password wenn das eingegebene Passwort das gleiche wie die gespeicherte ist zu überprüfen.

@Emil Wie erwähnt, unterstützt Django mehrere Kennwort Hashers wie pbkdf2_sha256 und pbkdf2_sha1 durch $ die Zeichenfolge als 3-fachen Wert getrennten Speicherung: algorithm$salt$hash. salt ist eine zufällig generierte Zeichenfolge, die verhindert, dass sich dasselbe Kennwort in der Datenbank wiederholt.