欢迎访问宙启技术站
智能推送

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

请注意,此示例程序仅为了演示目的,实际的生产环境中应该更加健壮和安全。例如,可以使用更复杂的加密算法,验证用户的身份,加强文件权限等。