Python: hashlib库、sha256、md5

关于比如,sha256,或md5之类的用法,用hashlib很方便。但有两种写法,可以了解一下。

下面是加盐的普通写法,是“盐放在前面的写法”。

一、sha256

# 写法一: 
def get_hash_value(pwd,salt):
    hash = hashlib.sha256(salt.encode('utf8'))     #同一种hash算法得到的长度是固定的
    hash.update(pwd.encode('utf8'))   #如果文件很大,可以持续读入,而不需要一次性读完
    hash_value = hash.hexdigest()
    print("f1=>",salt,"+",pwd," =>hash_value",hash_value) 
#写法二:
def get_hash_value2(pwd,salt):
    h = hashlib.sha256()
    _pwd = salt + pwd     # 注意顺序,如果反了,就不是原义了。
    h.update(_pwd.encode('utf-8')) #如果文件很大,可以持续读入,而不需要一次性读完
    hash_value =h.hexdigest()
    print("f2=>",salt,"+",pwd," =>hash_value",hash_value) 

试验一下,两种写法是否结果相同?

salts =["1","2"]
pwds =["a","b","c"]
for s in salts:
    for pwd in pwds:
        t0 = t.time()
        get_hash_value(pwd,s)
        #print("f1=>cost time: ",t.time()-t0,'s')

for s in salts:
    for pwd in pwds:
        t0 = t.time()
        get_hash_value2(pwd,s)
        #print("f2=>cost time: ",t.time()-t0,'s')

结果:
在这里插入图片描述可以看出,这两者的结果是相同的。另外,经测试性能,也还不错的。

二、md5

hashlib库中,对于md5和其它加密的方式是一样的,完全可以copy.

def get_hash_value(pwd,salt):
    hash = hashlib.md5(salt.encode('utf8'))     #同一种hash算法得到的长度是固定的
    hash.update(pwd.encode('utf8'))   
    hash_value = hash.hexdigest()
    print("f1=>",salt,"+",pwd," =>hash_value",hash_value) 

def get_hash_value2(pwd,salt):
    h = hashlib.md5()
    _pwd = salt + pwd
    h.update(_pwd.encode('utf-8'))
    hash_value =h.hexdigest()
    print("f2=>",salt,"+",pwd," =>hash_value",hash_value) 

经测试,结果也是一样的。

在这里插入图片描述

发布了285 篇原创文章 · 获赞 341 · 访问量 169万+

猜你喜欢

转载自blog.csdn.net/wowotuo/article/details/101099355
今日推荐