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 发布