一、字符串先转成二进制类型数据库
使用.encode()方法转成二进制类型安全
import hashlib password='123456' print(password.encode())#字符串不能直接加密,要先转成二进制类型的才能够加密 #结果为:b'123456'
二、使用加密方法网络
使用.hexdigest()方法输出加密后内容函数
import hashlib password='123456' m=hashlib.md5(password.encode()) #先转成二进制,再加密 #print(dir(m)) #因为这个加密模块pycharm提供不了提示方法,因此若是想知道都有什么方法,可使用内置函数dir(),使用这条语句就能打印出全部方法了 print(m.hexdigest()) #结果:e10adc3949ba59abbe56e057f20f883e
三、打印加密后的内容加密
使用dir()内置函数显示该变量的全部方法spa
因为该模块pycharm没法提供提示方法,即输入m“.”不出来方法,因此可使用内置函数dir(),将全部方法打印出来。code
#print(dir(m)) #因为这个加密模块pycharm提供不了提示方法,因此若是想知道都有什么方法,可使用内置函数dir(),使用这条语句就能打印出全部方法了 print(m.hexdigest())
一、检验加密结果blog
print(len(m.hexdigest()))
二、md5加密以后是不可逆的md5
若是输入的加密后密码碰巧数据库里有,就能把对应的加密前密码返回给你,并非真正的解密。字符串
三、其余的加密方式
本文的加密方式以md5方式加密举例,还有其余的加密方式,好比:.sha1()、.sha224()、.sha256()等,加密后的字符串长度更长,安全性更高。
原理:
若是要对password=123456加密,这个明文密码太简单,容易撞库解密,因此在123456以后随机加一个字符串,好比abc,这样实际是对123456abc进行加密,若是不知道abc这个字符串,反解的可能性下降,安全性更高。这样的一个字符串就叫作盐。
salt = '545chjdsafl@*&' password = input('password:') password += salt #加盐,把salt和password组合到一块儿 m = hashlib.md5(password.encode()) result = m.hexdigest() print(result)
#实现加密:传入一个值,若是有盐值,则加盐加密;不然直接加密 def my_md5(s:str,salt=None): s=str(s) if salt: s=s+salt m=hashlib.md5(s.encode()) return m.hexdigest()
任何付出都是值得的,会愈来愈好