python中hashlib模块

来源:互联网 发布:php namespace use 编辑:程序博客网 时间:2024/04/30 12:05

我们在储存一些重要的数据的时候,通常会将这些数据进行加密后进行储存。python中的hashlib为我们提供了这样的功能,其中主要包括MD5,SHA1,SHA256,SHA384,SHA512

等常见摘要算法。

什么是摘要算法?摘要算法又称哈希算法,它通过一个函数,把一个任意长度的数据进行加密后生成固定长度的数据串。

MD5是最常见的摘要算法,速度很快,生成固定长度128bit字节

SHA算法的结果是160bit,越安全的算法意味着其速度会相应变慢。

所以常见的算法为MD5和sha1算法。


使用的例子

import hashlibdef encrypt(arg):    s = bytes(arg,encoding = "utf-8")    md5 = hashlib.md5()    md5.update(s)    return md5.hexdigest()str1 = "hi hashlib"print(encrypt(str1))

其结果为

7cd5fd2b70cc4f543412a849e167dd55

使用其它的算法使用方式一样,区别只是其内部的算法实现不一样,相当于为我们提供了这些接口我们去使用。


但是往往只是经过这样的加密,其实并不是很安全,我们可以通过撞库的方式去获取这些重要的信息(我们可以列举出常用地字符串,生成相应的密码,然后作比较),这时我们可以通过在原来字符串的基础上自己提供一个key的字符串,先对这个字符串进行处理,然后再对想加密的数据进行加密。只要我们不将自己设定的字符串暴露,基本上无法破解。


例子

import hashlibdef encrypt(arg):    s = bytes(arg,encoding = "utf-8")    md5 = hashlib.md5(bytes("too young to simple",encoding="utf-8"))    md5.update(s)    return md5.hexdigest()str1 = "hi hashlib"print(encrypt(str1))


其结果为

856800434f7d4f6d5b3dc62920f0105c