一、MD5加密
加密的步骤如下:
import hashlib
m = hashlib.md5() #第一步创建一个MD5对象
m.update(b'hello') #第二步把内容转为字节写进去
# m.update(bytes('hello',encoding='utf-8')) #第二步把内容转为字节写进去
print(m.digest())#第三步进行加密,2进制格式的加密
print(m.hexdigest())#第三步进行加密,16进制格式的加密
返回结果:
b'#xb41xacxfexb4x1ex15xd4fxd7]xe8"0|'
23b431acfeb41e15d466d75de822307c
注意:加密的内容要是字节格式的,如果是字符串的话会报错,还有使用bytes和b都是将字符串转为字节,可注意bytes后面需说明encoding='utf-8',不然会报错
加密的小函数如下:
import hashlib
def md5Password():
password = input('plz enter your passwd:').strip()
m = hashlib.md5()
m.update(bytes(password,encoding='utf-8'))
# m.update(b'%s'%password) #用这个也是一样的
new_passwd = m.hexdigest()
print('加密后为:%s'%new_passwd)
return new_passwd
md5Password()
返回结果:
plz enter your passwd:123456
加密后为:e10adc3949ba59abbe56e057f20f883e
注意MD5加密之后的值是不可以解密的
撞库:有一个网站的数据库存存的加密后的数据和原来的字符串,如果输入的原字符在库里存在的话,就去库里筛选,存在就取出来,不存在就查不到
彩虹表:存了很多常用的密码,从表里一个一个尝试,确定密码是不是正确的
注意:以后写程序的时候,如果判断登陆的账号密码是否正确的话,就需要判断,在已有的库里面是不是存在的
sha1等是另外的一种加密方式,加密的方式用法都是一样的
二.其他方式加密
hashlib模块,主要用于加密相关的操作,在python3的版本里,代替了md5和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。
1.MD5加密范例一
m = hashlib.md5() #创建一个MD5对象
m.update(b"Hello")
print(m.digest())
print(m.hexdigest())
返回结果:
b"x8bx1ax99Sxc4ax12x96xa8'xabxf8xc4xx04xd7"
8b1a9953c4611296a827abf8c47804d7
2.MD5加密范例二
m = hashlib.md5() #创建一个MD5对象??
m.update(bytes("Hello",encoding='utf-8'))
print(m.digest())
print(m.hexdigest())
返回结果:
b"x8bx1ax99Sxc4ax12x96xa8'xabxf8xc4xx04xd7"
8b1a9953c4611296a827abf8c47804d7
注意:
上述的两个例子,返回结果是一样的,可在update的时候,一个使用的b一个使用的是bytes,注意他们之间的区别,并且在update里面直接输入字符是报错的,必须使用b/bytes转换才可以
3.sha1加密范例
hash = hashlib.sha1()
hash.update(b'123456')
print(hash.hexdigest())
print(len(hash.hexdigest())) #加密之后字符长度为40
7c4a8d09ca3762af61e59520943dc26494f8941b
4.sha256加密范例
hash = hashlib.sha256()
hash.update(b'123456')
print(hash.hexdigest())
print(len(hash.hexdigest())) #加密之后字符长度为64
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
5.sha384加密范例
hash = hashlib.sha384()
hash.update(b'123456')
print(hash.hexdigest())
print(len(hash.hexdigest())) #加密之后字符长度为96
0a989ebc4a77b56a6e2bb7b19d995d185ce44090c13e2984b7ecc6d446d4b61ea9991b76a4c2f04b1b4d244841449454
6.sha512加密范例
hash = hashlib.sha512()
hash.update(b'123456')
print(hash.hexdigest())
print(len(hash.hexdigest())) #加密之后字符长度为128
ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413