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())
hashlib 模块
最新推荐文章于 2025-02-01 00:00:00 发布
811

被折叠的 条评论
为什么被折叠?



