"""hashlib模块—许多散列函数的通用接口。
new(name, data=b'') - 返回实现的新散列对象。 哈希函数;初始化散列 使用给定的二进制数据。
命名构造函数也可用。, 下面这些都比构造函数快:
md5(), sha1(), sha224(), sha256(), sha384(), and sha512()
md5加密:不可逆的加密算法
明智地选择你的哈希函数。. Some have known collision weaknesses.
sha384和sha512将在32位平台上运行缓慢
Hash objects have these methods:
- update(arg): 用arg中的字节更新散列对象。 Repeated calls
are equivalent to a single call with the concatenation of all
the arguments.
- digest(): 返回传递给update()方法的字节摘要。
- hexdigest(): 就像digest(),除了摘要作为unicode返回。 双长度对象,仅包含十六进制数字
- copy(): 返回散列对象的复制(克隆)。这是通常可以有效地计算共享一个共同的字符串的摘要。 最初的子字符串。
For example, to obtain the digest of the string 'Nobody inspects the
spammish repetition':
>>> import hashlib
>>> m = hashlib.md5()
>>> m.update(b"Nobody inspects")
>>> m.update(b" the spammish repetition")
>>> m.digest()
b'\\xbbd\\x9c\\x83\\xdd\\x1e\\xa5\\xc9\\xd9\\xde\\xc9\\xa1\\x8d\\xf0\\xff\\xe9'
More condensed:
>>> hashlib.sha224(b"Nobody inspects the spammish repetition").hexdigest()
'a4337bc45a8fc544c03f52dc550cd6e1e87021bc896588bd79e901e2'
"""
1 #!/usr/bin/env python
2 # -*- encoding:utf-8 -*-
3 import hashlib
4
5
6 def md5(arg):
7 """
8 对密码进行md5加密
9 :param arg: 密码
10 :return: 返回unicode编码 双长度对象,仅包含十六进制数字
11 """
12 haha = hashlib.md5(bytes('jove', encoding="utf-8"))
13 haha.update(bytes(arg, encoding='utf-8'))
14 return haha.hexdigest()
15
16
17 def login(username, password):
18 """
19 登录
20 :param username: 用户名
21 :param password: 密码
22 :return: True,login success, False,login fail
23 """
24 with open('db', 'r', encoding='utf-8') as f:
25 for line in f:
26 line_list = line.strip().split("|")
27 if line_list[0] == username and line_list[1] == md5(password):
28 return True
29 return False
30
31
32 def register(username, password):
33 """
34 注册
35 :param username: 用户名
36 :param password: 密码
37 :return: True,register success, False,register fail
38 """
39 with open('db', 'a', encoding='utf-8') as f:
40 temp = "\n" + username + "|" + md5(password)
41 f.write(temp)
42 return True
43 return False
44
45
46 while True:
47 choice = input("1.login------2.register")
48
49 if choice == '1':
50 username = input("please input username:")
51 password = input("please input password:")
52 flag = login(username, password)
53 if flag:
54 print("login success")
55 else:
56 print("login fail")
57 elif choice == '2':
58 username = input("please input username:")
59 password = input("please input password:")
60 register(username, password)