第一题
import hashlib def login(user, password): psw_md5 = hashlib.md5(password.encode('utf-8')).hexdigest() return psw_md5 == db[user]
第二题
def login(username, password): user = db[username] return user.password == get_md5(password+user.salt) #就加一个+user.salt就好了
md5、sha1、sha256和sha512都是摘要算法,即把一串长度不确定的数据通过函数返回成一串固定长度的数据,不是加密算法,只能用来防篡改和保存一些明文保存不太合适的数据。MD5最常用,返回128位数据,常表示为32位16进制字符串;sha1返回160位数据,常表示为40位16进制字符串。由于相同数据通过相同摘要算法得到的返回值相同,所以黑客会利用常见简单密码如123456的MD5值或sha1值来找到对应的用户名,或是匹配相同的摘要算法的值,这时可以在用户密码后加入复杂字符串再得到md5来防止这种情况发生。
Sign in to make a reply
黄方方方方
第一题
第二题
md5、sha1、sha256和sha512都是摘要算法,即把一串长度不确定的数据通过函数返回成一串固定长度的数据,不是加密算法,只能用来防篡改和保存一些明文保存不太合适的数据。MD5最常用,返回128位数据,常表示为32位16进制字符串;sha1返回160位数据,常表示为40位16进制字符串。由于相同数据通过相同摘要算法得到的返回值相同,所以黑客会利用常见简单密码如123456的MD5值或sha1值来找到对应的用户名,或是匹配相同的摘要算法的值,这时可以在用户密码后加入复杂字符串再得到md5来防止这种情况发生。