加密

一、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'#\xb41\xac\xfe\xb4\x1e\x15\xd4f\xd7]\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"\x8b\x1a\x99S\xc4a\x12\x96\xa8'\xab\xf8\xc4x\x04\xd7"
8b1a9953c4611296a827abf8c47804d7
2.MD5加密范例二
m = hashlib.md5() #创建一个MD5对象??
m.update(bytes("Hello",encoding='utf-8'))
print(m.digest())
print(m.hexdigest())
返回结果:
b"\x8b\x1a\x99S\xc4a\x12\x96\xa8'\xab\xf8\xc4x\x04\xd7"
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


posted @ 2017-06-29 23:02  MLing  阅读(472)  评论(0编辑  收藏  举报