python的hash模块


1 什么是hash
    hash 是一种算法,该算法接受传入的内容,经过运算得到一串hash值
    如果把hash算法比喻为一座工厂
    那传给hash算法的内容就是原材料
    生成的hash值就是生产出的产品

2 为何要用hash算法
    hash值、产品的三大特性:
        1,只要传入的内容一样,得到的hash值必然一样
        2,只要我们使用的hash算法固定,无论传入的内容有多大
            得到的hash值的长度的都是固定的

        3,不可以用hash值逆推出原来的内容

        基于1和2的可以在下载文件时做一致性效验
        基于1和3可以对密码进行加密


3 ,如何用
'''
import hashlib

# 1,造出hash工厂
m=hashlib.md5()

# 2,运送原材料
m.update('你好啊美丽的'.encode('utf-8'))
m.update('林磊'.encode('utf-8'))

# 3,产出hash值
print(m.hexdigest())#0f1c24acdd78fd0551e9d4b443b691a0


# 1.造出hash工厂
n=hashlib.md5('你'.encode('utf-8'))

# 2.运送原材料
n.update('好啊美丽的林磊'.encode('utf-8'))

# 3,产出hash值
print(m.hexdigest())#跟上面的hash值是一样的0f1c24acdd78fd0551e9d4b443b691a0

# 应用一。文件的一致性校验

x=hashlib.sha512('你'.encode('utf-8'))

x.update('好啊美丽的草原'.encode('utf-8'))

print(x.hexdigest())
# 无论输入内容多长,产出的hash值的长度是一样的

m=hashlib.md5()

with open(r'd.txt','rb')as f:
    for line in f:
        m.update(line)

print(m.hexdigest())#只要输入的值一样,不管分几段update得到的hash的值都是一样的


# 应用二:对明文密码进行加密
password=input('>>>')

y=hashlib.md5()
y.update('天王'.encode('utf-8'))
y.update(password.encode('utf-8'))
print(y.hexdigest())


import hmac
m=hmac.new('可以'.encode('utf-8'))
m.update('hello'.encode('utf-8'))
print(m.hexdigest())
#hmac和hash的不一样的地方在于new的小括号内要加入内容才可以正常运行

猜你喜欢

转载自blog.csdn.net/qq_35540539/article/details/80807649
今日推荐