加密
使用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')