Discuss / Python / 学了内置模块hashlib

学了内置模块hashlib

Topic source

第一题

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来防止这种情况发生。


  • 1

Reply