Python编写一个简单的密码管理器
发布时间:2023-12-04 09:56:07
下面是一个简单的密码管理器的Python代码示例:
import json
import hashlib
from getpass import getpass
def load_passwords():
try:
with open('passwords.json', 'r') as f:
return json.load(f)
except (FileNotFoundError, json.JSONDecodeError):
return {}
def save_passwords(passwords):
with open('passwords.json', 'w') as f:
json.dump(passwords, f)
def encrypt_password(password):
return hashlib.sha256(password.encode()).hexdigest()
def add_password(passwords, name, username, password):
passwords[name] = {
'username': username,
'password': encrypt_password(password)
}
save_passwords(passwords)
def get_password(passwords, name):
if name in passwords:
return passwords[name]['password']
else:
return None
def delete_password(passwords, name):
if name in passwords:
del passwords[name]
save_passwords(passwords)
def main():
passwords = load_passwords()
while True:
print('1. 添加密码')
print('2. 获取密码')
print('3. 删除密码')
print('4. 退出')
choice = input('请选择一个选项: ')
if choice == '1':
name = input('请输入密码的名称: ')
username = input('请输入用户名: ')
password = getpass('请输入密码: ')
add_password(passwords, name, username, password)
print('密码已添加成功!')
elif choice == '2':
name = input('请输入要获取密码的名称: ')
password = get_password(passwords, name)
if password:
print(f"密码: {password}")
else:
print('密码不存在!')
elif choice == '3':
name = input('请输入要删除密码的名称: ')
delete_password(passwords, name)
print('密码已成功删除!')
elif choice == '4':
break
else:
print('无效的选项,请重新选择!')
if __name__ == '__main__':
main()
这个密码管理器使用了一个简单的JSON文件来存储密码。每个密码都有一个名称、用户名和加密后的密码 (使用SHA-256算法)。
运行该程序后,用户可以选择添加密码、获取密码、删除密码或退出。在添加密码时,用户需要为密码提供名称、用户名和密码;在获取密码时,用户需要提供名称来获取密码;在删除密码时,用户需要提供名称来删除密码。
使用该密码管理器的一个示例会话如下所示:
1. 添加密码 2. 获取密码 3. 删除密码 4. 退出 请选择一个选项: 1 请输入密码的名称: Gmail 请输入用户名: myemail@gmail.com 请输入密码: 密码已添加成功! 1. 添加密码 2. 获取密码 3. 删除密码 4. 退出 请选择一个选项: 2 请输入要获取密码的名称: Gmail 密码: a3f1ccf97ebb68960b436370db2f12ef2d9e4703742baedcabe6deafb9b491f5 1. 添加密码 2. 获取密码 3. 删除密码 4. 退出 请选择一个选项: 3 请输入要删除密码的名称: Gmail 密码已成功删除! 1. 添加密码 2. 获取密码 3. 删除密码 4. 退出 请选择一个选项: 4
请注意,此示例程序仅为了演示目的,实际的生产环境中应该更加健壮和安全。例如,可以使用更复杂的加密算法,验证用户的身份,加强文件权限等。
