python hashlib模块
一,hashlib模块主要用于加密,其中提供sha1,sha224,sha256,sha384,sha512,md5算法。常用的使用md5即可完成需求。
一,使用md5普通加密
import hashlib
m = hashlib.md5()
m.update(b'cnblog.com')
print(m.hexdigest())
二,2次加密,其实就是将第一次的要加密的字符串和第二次要加密的字符串拼接起来做一次加密
import hashlib
m2 = hashlib.md5('www.'.encode('utf-8'))
m2.update('cnblogs.com'.encode('utf-8'))
print(m2.hexdigest())
或者
import hashlib
m3 = hashlib.md5()
m3.update('www.'.encode('utf-8'))
m3.update('cnblogs.com'.encode('utf-8'))
print(m3.hexdigest())
或者直接将2次加密的字符串直接拼接
import hashlib
m4 = hashlib.md5()
m4.update('www.cnblogs.com'.encode('utf-8'))
print(m4.hexdigest())
三,使用其他加密算法,和md5类似,比如sha512
import hashlib
m5 = hashlib.sha512()
m5.update(b'www')
print(m5.hexdigest())
小例子:
import hashlib
import sys
class UserInfo(object):
def __init__(self):
print(
"""
1,注册
2,登陆
3,退出
"""
)
#此方法用于加密用户的密码
def md5(self,password):
md5_pwd = hashlib.md5()
# md5_pwd.update(bytes(password,encoding='utf-8'))
md5_pwd.update(password.encode('utf-8'))
return md5_pwd.hexdigest()
#此方法用于后面注册和登陆公共输入接口
def input(self):
username = input('请输入账号:')
password = input('请输入密码:')
return (username,password)
#注册方法
def register(self):
username,password= self.input()
with open('userinfo.txt','r') as f:
while True:
line = f.readline()
if line:
if username == line.split()[0]:
print('user alreay register')
break
else:
password = self.md5(password)
with open('userinfo.txt','a') as f:
f.write('{0}\t{1}\n'.format(username,password))
print('rgister sucessful,Please login ')
break
#登陆方法
def login(self):
username,password= self.input()
with open('userinfo.txt','r') as f:
for line in f:
if line.split()[0] == username and line.split()[1] == self.md5(password):
print('login sucessful!')
break
elif line.split()[0] == username and line.split()[1] != self.md5(password):
print('passwd error!')
break
else:
print('user not register!!!')
print('login fail!!!')
#主程序
def main():
while True:
user = UserInfo()
n = int(input('please input number:>>>'))
if n == 1:
user.register()
elif n == 2:
user.login()
else:
sys.exit(0)
if __name__ == '__main__':
main()