However, considering that Django has a user authentication module, it is proven that it has a Cross-platform encryption module. So read the document and find this passage on the https://docs.djangoproject.com/en/1.6/topics/auth/passwords/page:
The code is as follows |
Copy Code |
Manually managing a user ' s password
The django.contrib.auth.hashers module provides a set of functions to create and validate hashed password. can use them independently from the User model.
Check_password (
password,
encoded)
If you ' d like to manually authenticate a user by comparing a plain-text password to the hashed password in the database, U Se the convenience function Check_password (). It takes two arguments:the plain-text password to check, and the full value of a user's password field in the Database to check against, and returns True if they match, False otherwise.
Changed in Django 1.6:
In Django 1.4 and 1.5, a blank string is unintentionally considered to is a unusable password, resulting in Returning False for such a password.
Make_password (
password[,
salt,
hashers])
Creates a hashed password in the format used by this application. It takes one mandatory argument:the password in Plain-text. Optionally, you can provide a salt and a hashing algorithm to use, if you don ' t want to use the defaults (a password_hashers setting). Currently supported algorithms are: ' pbkdf2_sha256', ' pbkdf2_sha1', ' bcrypt_sha256' (U Sing Bcrypt with Django), ' Bcrypt ', ' SHA1 ', ' MD5', ' unsalted_md5 ' (A for BA Ckward compatibility) and ' crypt ' if you have the Crypt library installed. If The password argument is None, a unusable password are returned (a one that would be never accepted by check_password ()).
|
Two APIs are given, one to create a password, and a validation password to meet the needs. So hurry and try:
First, introduce modules:
The code is as follows |
Copy Code |
>>> from django.contrib.auth.hashers import Make_password, Check_password Generate Password:
>>> Make_password ("Www.111cn.net", None, ' pbkdf2_sha256 ') U ' pbkdf2_sha256$12000$h6hrzd4ddikg$rxbgbtifwadyw+j9o7114vxkvysbvp+lz7osyxkoic0= ' |
This allows you to use the Django self-contained module to generate a set of passwords, which also features a different password each time it is generated:
code is as follows |
copy code |
>>> Make_password ("Www.111cn.net", None, ' pbkdf2_sha256 ') U ' pbkdf2_sha256$12000$h6hrzd4ddikg$ rxbgbtifwadyw+j9o7114vxkvysbvp+lz7osyxkoic0= ' >>> Make_password ("Www.111cn.net", None, ' pbkdf2_sha256 ') U ' pbkdf2_sha256$12000$9l09rjd9mbqj$0tjvxbzfn6wwd/qi3weldrrwou7inb7im3ub/np2ppg= ' >>> Make_password ("Www.111cn.net", none, ' pbkdf2_sha256 ') = = Make_password ("Www.111cn.net", none, ' pbkdf2_sha256 ') False |
Since each generated ciphertext is not the same, how to verify the user submitted to the plaintext and ciphertext match it? This is done by Check_password, Check_password is very simple to use, just tell it plaintext and ciphertext it will return false or True to verify the results
The code is as follows |
Copy Code |
>>> Text = "Www.111cn.net" >>> passwd = Make_password (text, None, ' pbkdf2_sha256 ') >>> Print passwd pbkdf2_sha256$12000$xzmlhcnvqbb8$i1xdnjipb/crrgrx2x7ym74rnfprcup5pbu6sn+v3j0= >>> print Check_password (text, passwd) True
|
If you don't want to generate different ciphertext each time, you can give the second function of Make_password a fixed string, such as:
The code is as follows |
Copy Code |
>>> Make_password (text, "A", ' pbkdf2_sha256 ') U ' pbkdf2_sha256$12000$a$5hkipczrzgstkuba5uzzmruawdp2qe6oemhdasvzv4q= ' >>> Make_password (text, "A", ' pbkdf2_sha256 ') U ' pbkdf2_sha256$12000$a$5hkipczrzgstkuba5uzzmruawdp2qe6oemhdasvzv4q= ' |
As long as any string can be, and can be multiple. But cannot be empty, for example:
The code is as follows |
Copy Code |
>>> Make_password (Text, "", ' pbkdf2_sha256 ') U ' pbkdf2_sha256$12000$kbcg81bwmavd$ajngftogfhogoglste2goem3ifkzz1hydsufeqnzhxu= '
>>> Make_password (Text, "", ' pbkdf2_sha256 ') U ' pbkdf2_sha256$12000$fnv3yu4kgylr$1fi8mxardht6hj/er72ycylgtakw7ymwtj+wv4vhygy= '
|
A string that is empty is equivalent to:
1
The code is as follows |
Copy Code |
Make_password (text, None, ' pbkdf2_sha256 ') |
As for Make_password The third parameter is a way to generate ciphertext, which is roughly the same as the documentation given:
The code is as follows |
Copy Code |
pbkdf2_sha256 Pbkdf2_sha1 bcrypt_sha256 Bcrypt Sha1 Unsalted_md5 Crypt |
The above example I used the first encryption method Pbkdf2_sha256,crypt and Bcrypt all need separate installation module, UNSALTED_MD5 is a common MD5 encryption, if the cryptographic hashing algorithm is not very understanding, So just use Django's latest hash algorithm, pbkdf2_sha256.