Python模块——hashlib

Python模块——hashlib简介 hashlib 模块是用于对字符串进行加密 其可以把任意长度的数据转换为一个长度固定的数据串 且这种加密是不可逆的 故这种加密方式的安全性都很高 hash 本质是一个函数 该模块提供了许多不同的加密算法 可查看其属性 algorithms guaranteed 来获取 包括 md5 sha1 sha224 sha256 sha384 sha512 使用非常简单 方便 该模块由 python 自

简介

hashlib模块是用于对字符串进行加密,其可以把任意长度的数据转换为一个长度固定的数据串,且这种加密是不可逆的,故这种加密方式的安全性都很高。hash本质是一个函数,该模块提供了许多不同的加密算法,可查看其属性algorithms_guaranteed来获取,包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。该模块由python自带,故不需要自己安装。其中md5算法多用于对密码的加密,而sha1加密后的长度比md5更长,故安全性更高,但相应的运算速度就会变慢.

常用方法

  • 数据加密:有两种方式,推荐使用第二种,因为这种加密算法直接hashlib点出来即可。
import hashlib password = 'wl'.encode() result1 = hashlib.new('md5',password) result2 = hashlib.md5(password) print(result1) print(result2)
 
   
    
  

可以看出,打印结果并不能得到加密后的数据,只是给出了其内存地址而已,hashlib给了专门的方法来获取加密的数据。在加密前给的密码我们记得要先编码为utf8.

  • 获取加密后的数据:有两种方式,第一种以二进制形式返回,第二种以十六进制返回。
import hashlib password = 'wl'.encode() result1 = hashlib.md5(password) print (result1.digest()) print(type(result1.digest())) print (result1.hexdigest()) print(type(result1.hexdigest()))
b'\xc6\x9bA\x05\xdaf%$\xf7\xe7\xd9\x1b\x13\xba\xf1\xad' 
  
    c69b4105daf7e7d91b13baf1ad 
    
    
  

这里要讲一个知识点就是加盐salt,它的目的是加大加密的安全性,给一些简易的密码提高被激活成功教程的难度,其原理就是再原先密码的基础上再加上一串字符,如下代码所示:

import hashlib salt = 'qweasd'.encode() password = 'wl'.encode()+salt result = hashlib.md5(password) print(result.digest()) print(result.hexdigest())
b',\xd9\xc1WE\x02(\xa927\xc1\xe3g\xc0\xfa&' 2cd9ca93237c1e367c0fa26
  • 标准给密码加密:该模块给了一个比较全面的方法来给密码加密。
salt = 'qweasd'.encode() password = 'wl'.encode() res = hashlib.pbkdf2_hmac('md5',password,salt,100)#100是迭代次数,更加大了安全性 print(res) print(type(res))
b'\x87\xe9\x92\xb2\x10l\x89OG\xc2~\xfe#N~\xf0' 
  

该函数的返回结果就是加密后的数据,故可直接打印出来,这里不能用digest和hexdigest方法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222649.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午3:17
下一篇 2026年3月17日 下午3:18


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号