hashlib 模块

        hash是什么?
            是一种算法
            用于将任意长度的数据,压缩映射到一段固定长度的字符 (提取特征)


            hash的特点:
            1.输入数据不同,得到的hash值有可能相同
            2.不能通过hash值来得到输入的值
            3.如果算法相同,无论输入的数据长度是多少,得到的hash值长度相同

            因为以上特点常将hash算法用于加密和文件校验
            输入用户名和密码 在代码中与数据库中的判断是否相同
            思考当你的数据需要在网络中传递时 就可能会受到网络攻击
            黑客通过抓包工具就能截获你发送和接收的数据
            所以你的数据 如果涉及到隐私 就应该先加密在发送

            加密的方式有很多
            常用的MD5就是一种hash算法


            常用的提升安全性的手段 就是加盐
            就是把你加密前的数据做一些改动 例如 把顺序反过来

        library


import hashlib
md = hashlib.md5()
md.update("hello你这么牛逼吗 你破解我试试? DSB".encode("utf-8"))
print(md.hexdigest())


# 破解MD5可以尝试撞库   原理: 有一个数据库 里面存放了常见的明文和密文的对应关系 ,
# 所以我可以拿着一个密文取数据库中查找 有没有已经存在的明文  如果有撞库成功  能不能破解凭运气
# 假设我已经拿到了一个众多账号中的一个密码  我可以那这个密码 挨个测试你的所有账号  可能不能碰到运气
pwd_dic = {"123456":"e10adc3949ba59abbe56e057f20f883e","hello":"5d41402abc4b2a76b9719d911017c592"}



for i in pwd_dic:
    if pwd_dic[i] == "5d41402abc4b2a76b9719d911017c592":
        print(i)
''

# 今后我们在写一些需要网络传输的程序时 如果要进行加密  最好把加密的算法搞得更复杂
# 密码长度为6位
# abcdef
# 在前面加一个  abc  在后面加一个 cba 完事以后在加密
pwd = "abcdef"

# pwd = "abc"+pwd+"cba"

md2 = hashlib.md5()
md2.update("121".encode("utf-8"))
md2.update(pwd.encode("utf-8"))
md2.update("akjasjkasa".encode("utf-8"))
print(md2.hexdigest())


# 加密实际上能做的就是让黑客的的破解成本大于他的利润


#
# sha = hashlib.sha512()
# sha.update("abcd".encode("utf-8"))
# print(len(sha.hexdigest()))
#

import hmac
h = hmac.new("121212".encode("utf-8"))
h.update("abcd".encode("utf-8"))
print(h.hexdigest())


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值