加密

使用Python的hashlib类进行加密:

hashlib是个专门提供hash算法的库,里面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。

MD5

MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)。128位长度。目前MD5是一种不可逆算法。

具有很高的安全性。它对应任何字符串都可以加密成一段唯一的固定长度的代码。

SHA1

SHA1的全称是Secure Hash Algorithm(安全哈希算法) 。SHA1基于MD5,加密后的数据长度更长,

它对长度小于264的输入,产生长度为160bit的散列值。比MD5多32位。因此,比MD5更加安全,但SHA1的运算速度就比MD5要慢了

import hashlib
a='abcd'
b='abcd'
m=hashlib.md5(a).hexdigest()
n=hashlib.md5(b).hexdigest()

m == n 返回True
print m
返回:e2fc714c4727ee9395f324cd2e7f331f

使用django的api(make_password, check_password)进行密码的加密与验证

make_password(password[, salt, hashers])

from django.contrib.auth.hashers import make_password, check_password
#make_password 用于加密密码
#check_password用于验证输入的密码是否正确

a='abcd'
passwd = make_password(a, None, 'pbkdf2_sha256') 
print passwd 返回: u'pbkdf2_sha256$20000$rkolStxsoOG9$LeokGEsTcxhpHrl6JOfTzCZIPLC23YL3n6KPcpEF9qU=' check_password(b,passwd) 返回True

make_password每次返回的字符串都不相同,如果需要返回相同的字符串,可以把make_password的第二个函数给一个固定的字符串如下:
make_password(a,‘abc’, 'pbkdf2_sha256')
如果第二个参数为空,则相当于make_password(a, None, 'pbkdf2_sha256')

 
原文地址:https://www.cnblogs.com/dreamer-fish/p/5242122.html