2013-09-30 14 views

cevap

10

gibi Örneğin, diğer uygulamada, fakat Django .Çalıştırıcılı adı 'yönetici' ile aynı veritabanı kullanarak şifre sana aradığınızı belki bu düşünüyorum:

Manually managing a user’s password

make_password (şifre [tuzu hashers])

kullanılan biçiminde bir karma şifre oluşturur Bu uygulama ile. Tek bir zorunlu argümanı alır: şifreyi düz metin olarak. İsteğe bağlı olarak, varsayılanları kullanmak istemiyorsanız (PASSWORD_HASHERS ayarının ilk girişi) bir tuz ve karma algoritması kullanabilirsiniz. Şu anda desteklenen algoritmalar şunlardır: 'pbkdf2_sha256', 'pbkdf2_sha1', 'bcrypt_sha256' (bkz. Bcrypt Django ile), 'bcrypt', 'sha1', 'md5', 'unsalted_md5' (yalnızca geriye dönük uyumluluk için) ve ' Crypt kütüphanesi yüklü ise. Parola argümanı Yok ise, kullanılamaz bir parola döndürülür (check_password() tarafından hiçbir zaman kabul edilmeyecek olan).


Ben

gidip neye ihtiyacınız alabilir böylece Eh şans Django açık kaynak olduğu django

olmadan kullanmak için fonksiyon yazmak istiyorum. The functions source is visible here.

+0

teşekkürler, ancak bu yöntemler django uygulamasıyla birlikte kullanılır. Django kullanmadan yazmak için yazma işlevi istiyorum, bunun gibi bir şey: http://stackoverflow.com/questions/1306550/calculating-a-sha-hash-with-a-string-secret-key-in-python – saniaxxx26

3

En yaygın (güvenli değil) hashing için algoritma md5'dur.

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 

kullanın make_password bir karma oluşturmak ve girilen şifre saklanan aynı olup olmadığını kontrol etmek için check_password: Django'nın şifre sisteminden birkaç fikir ayıklanıyor bu kodu olabilir. algorithm$salt$hash:

@Emil işaret ettiği gibi, Django $ ile ayrılan bir 3-misli değer olarak dizge depolanması, bu pbkdf2_sha256 ve pbkdf2_sha1 gibi çoklu şifre hashers destekler. salt, aynı parolayın veritabanında tekrarlanmasını önlemek için rasgele oluşturulmuş bir dizedir.