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的小括号内要加入内容才可以正常运行
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值