常用模块2

一 .hashlib模块

  1.对摘要算法的认识

    (1).摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

    (2).对于同一个字符串,不管这个字符串长度多长,只要相同的,无论在任何环境下多次执行,在任何语言中使用相同的算法,相同的手段得到的结果都是相同的,只要不是相同的字符串,得到的结果一定不同

  2.摘要算法MD5

    (1)hashlib.md5

    (2)md5的计算速度很快,生成的是一个32位的十六进制字符.

    (3)如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的:

复制代码
md5
import hashlib
a = hashlib.md5()
a.update(a.encode("utf-8"))
ret = a.hexdigest()
print(ret)

复制代码

    (4)由于常用口令的MD5值很容易被计算出来,所以,要确保存储的用户口令不是那些已经被计算出来的常用口令的MD5,这一方法通过对原始口令加一个复杂字符串来实现,俗称“加盐”

复制代码
加盐
import hashlib
a = hashlib.md5("123".encode("utf-8"))
a.update("456789qwer".encode("utf-8"))
ret = a.hexdigest()
print(ret)


动态加盐
username = input('username : ')
passwd = input('password : ')
md5obj = hashlib.md5(username.encode('utf-8'))
md5obj.update(passwd.encode('utf-8'))
print(md5obj.hexdigest())
ee838c58e5bb3c9e687065edd0ec454f
View Code
复制代码

 

 3.摘要算法 sha1

    (1)hashlib.sha1

    (2)hashlib计算速度较慢,但是过程复杂,更安全. 生成的是一个40位的十六进制字符.

    (3)如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的:

复制代码
sha1
import hashlib
a = hashlib.sha1()
a.update("15234".encode("utf-8"))#1270f53049a7a5276019a7f931772c886fac6294
a.update("rewy".encode("utf-8"))
ret = a.hexdigest()
print(ret)

复制代码

 

    

posted @   古月蜀黍  阅读(118)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示