在当今社会,随着互联网的普及,人们越来越频繁地使用各种在线服务和网站,每个网站都要求用户注册并设置帐号密码。然而,为了方便记忆,很多人养成了在不同网站使用相同帐号密码的习惯,这样的做法存在着严重的安全隐患。
当一个网站的帐号信息遭到泄露,用户在其他网站上使用相同密码的帐号也将受到威胁。为了提高个人信息的安全性,密码管理器应运而生。Npass作为一款开源、免费且极其易用的密码管理工具,为用户提供了全面的密码管理解决方案。
Npass不仅能够自动记录所有互联网帐号的密码,而且还可以生成强度极高的复杂密码,有效防止用户的个人隐私被泄露。
主要特点介绍:
-
开源免费: Npass是一款完全开源的密码管理工具,用户可以免费使用并自由查看源代码。这为用户提供了透明度和可信度,使用户能够了解软件的工作原理。
-
256位AES加密: 为了确保用户的密码数据安全,Npass采用了256位AES加密算法进行加密。这一高级加密标准保护了用户密码的存储和传输,提供了强大的安全性。
-
小巧绿色: Npass不占用过多系统资源,体积小巧,运行轻便。同时,它是绿色软件,不会对系统做任何损害,保证用户在使用过程中的稳定性和流畅性。
-
丰富功能: Npass不仅能够存储和管理用户的各种账号和密码,还支持二次开发。用户可以根据自己的需求进行定制,甚至可以打造属于自己的密码管理工具。
主要功能介绍:
-
添加记录: Npass密码管理工具提供了简单而直观的界面,让用户轻松地添加新的帐号记录。通过填写相关信息,如网站名称、用户名、密码等,用户可以迅速记录下各个在线服务的登录凭据。
-
添加分类: 为了更好地组织和管理密码,Npass允许用户为记录添加分类。用户可以根据个人需求,创建不同的分类,将相似的账号记录归并在一起,使整个密码库更加清晰有序。
-
复制用户名和密码: Npass提供了方便的复制功能,用户可以轻松复制记录中的用户名和密码。这种功能使得用户可以快速粘贴登录信息,无需手动输入,提高了使用便捷性。
-
删除记录和删除分类: 在Npass中,用户可以随时删除不再需要的帐号记录或整个分类。这为用户提供了灵活的管理选项,使其能够轻松地维护自己的密码库。
-
密码生成工具: 为了提高密码的安全性,Npass内置了强大的密码生成工具。用户可以根据需要生成包含大小写字母、数字和特殊字符的复杂密码,并即时应用于新的帐号记录。
通过这些功能,Npass密码管理工具不仅使用户能够高效地记录和管理各种在线服务的帐号信息,而且确保了这些信息的安全性。用户可以根据个人使用习惯和需求,轻松定制密码库,同时通过密码生成工具创建强度高的随机密码,为自己的在线账户提供了可靠的保护。
总体而言,Npass是一款强大、安全且免费的密码管理工具,为用户提供了便捷的密码管理体验。无论是普通用户还是对密码管理有更高要求的技术人员,都能够在Npass中找到满足自己需求的功能。通过使用Npass,用户可以摆脱相同密码带来的安全隐患,有效保护个人信息的安全。
软件截图:
开源代码(部分)
如果需要完整代码,文章最下方有软件安装包下载地址。安装成功后可在帮助菜单-获取源代码
def main():
# 全局变量
global root, left_listbox, right_treeview, search_entry, refresh_button, context_menu, login_window, password_entry
root = tk.Tk()
root.title("Npass - 免费开源的密码管理工具,使用Python3语言开发,安全可靠。")
# 窗口居中
def center_window(window, width, height):
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
# 计算窗口的位置
x_position = (screen_width - width) // 2
y_position = (screen_height - height) // 2
# 显示窗口
window.geometry(f"{width}x{height}+{x_position}+{y_position}")
window.resizable(False, False)
# 窗口居中
center_window(root, 1320, 700)
root.withdraw()
create_database()
# 创建登录窗口
create_login_window()
# 菜单栏
menu_bar = tk.Menu(root)
root.config(menu=menu_bar)
#文件菜单
file_menu = tk.Menu(menu_bar, tearoff=0)
file_menu.add_command(label="添加记录", command=add_record)
file_menu.add_command(label="添加分类", command=add_category)
file_menu.add_separator()
file_menu.add_command(label="退出", command=root.destroy)
menu_bar.add_cascade(label="文件(F)", menu=file_menu)
# 编辑菜单
edit_menu = tk.Menu(menu_bar, tearoff=0)
edit_menu.add_command(label="复制用户名", command=copy_username)
edit_menu.add_command(label="复制密码", command=copy_password)
edit_menu.add_separator()
edit_menu.add_command(label="查看密码", command=view_password)
edit_menu.add_separator()
edit_menu.add_command(label="删除记录", command=delete_record)
edit_menu.add_command(label="删除分类", command=delete_category)
menu_bar.add_cascade(label="编辑(E)", menu=edit_menu)
# 工具菜单
tools_menu = tk.Menu(menu_bar, tearoff=0)
tools_menu.add_command(label="密码生成器", command=create_password_generator)
menu_bar.add_cascade(label="工具(T)", menu=tools_menu)
# 管理菜单
manage_menu = tk.Menu(menu_bar, tearoff=0)
manage_menu.add_command(label="修改管理密码", command=change_password)
menu_bar.add_cascade(label="系统管理(G)", menu=manage_menu)
# 帮助菜单
help_menu = tk.Menu(menu_bar, tearoff=0)
help_menu.add_command(label="关于软件", command=show_about)
help_menu.add_separator()
help_menu.add_command(label="赞赏作者", command=show_appreciate_popup)
help_menu.add_command(label="获取源代码", command=check_files_existence)
menu_bar.add_cascade(label="帮助(H)", menu=help_menu)
#底部状态栏内容
create_status_bar("本软件仅用于学习交流,获取到的源代码请勿用于商业化行为或者二次开发非法用途,软件作者不对任何损失负责。")
# 添加横向按钮区域
button_frame = tk.Frame(root)
button_frame.pack(side=tk.TOP, fill=tk.X)
# 添加记录图标
add_record_icon_name = "add_record_icon.png"
add_record_icon = resize_icon(add_record_icon_name)
add_record_button = ttk.Button(button_frame, image=add_record_icon, command=add_record)
add_record_button.image = add_record_icon
add_record_button.pack(side=tk.LEFT, padx=5)
# 添加分类图标
add_category_icon_name = "add_category_icon.png"
add_category_icon = resize_icon(add_category_icon_name)
add_category_button = ttk.Button(button_frame, image=add_category_icon, command=add_category)
add_category_button.image = add_category_icon
add_category_button.pack(side=tk.LEFT, padx=5)
# 添加分割线
separator = ttk.Separator(button_frame, orient="vertical")
separator.pack(side=tk.LEFT, fill=tk.Y, pady=7)
# 添加用户名图标
copy_username_icon_name = "copy_username_icon.png"
copy_username_icon = resize_icon(copy_username_icon_name)
copy_username_button = ttk.Button(button_frame, image=copy_username_icon, command=copy_username)
copy_username_button.image = copy_username_icon
copy_username_button.pack(side=tk.LEFT, padx=5)
# 添加密码图标
copy_password_icon_name = "copy_password_icon.png"
copy_password_icon = resize_icon(copy_password_icon_name)
copy_password_button = ttk.Button(button_frame, image=copy_password_icon, command=copy_password)
copy_password_button.image = copy_password_icon
copy_password_button.pack(side=tk.LEFT, padx=5)
# 添加查看密码图标
view_password_icon_name = "view_password_icon.png"
view_password_icon = resize_icon(view_password_icon_name)
view_password_button = ttk.Button(button_frame, image=view_password_icon, command=view_password)
view_password_button.image = view_password_icon
view_password_button.pack(side=tk.LEFT, padx=5)
# 添加分割线
separator = ttk.Separator(button_frame, orient="vertical")
separator.pack(side=tk.LEFT, fill=tk.Y, pady=7)
# 添加删除记录图标
delete_record_icon_name = "delete_record_icon.png"
delete_record_icon = resize_icon(delete_record_icon_name)
delete_record_button = ttk.Button(button_frame, image=delete_record_icon, command=delete_record)
delete_record_button.image = delete_record_icon
delete_record_button.pack(side=tk.LEFT, padx=5)
# 添加删除分类图标
delete_category_icon_name = "delete_category_icon.png"
delete_category_icon = resize_icon(delete_category_icon_name)
delete_category_button = ttk.Button(button_frame, image=delete_category_icon, command=delete_category)
delete_category_button.image = delete_category_icon
delete_category_button.pack(side=tk.LEFT, padx=5)
# 添加分割线
separator = ttk.Separator(button_frame, orient="vertical")
separator.pack(side=tk.LEFT, fill=tk.Y, pady=7)
# 添加刷新按钮
refresh_icon_name = "refresh_icon.png" # 你的刷新图标文件名
refresh_icon = resize_icon(refresh_icon_name)
refresh_button = ttk.Button(button_frame, image=refresh_icon, command=refresh_data)
refresh_button.image = refresh_icon
refresh_button.pack(side=tk.LEFT, padx=5)
# 添加查找输入框
search_entry = tk.Entry(button_frame, width=20)
search_entry.pack(side=tk.LEFT, padx=5)
# 添加查找按钮
search_button = ttk.Button(button_frame, text="查找", command=lambda: on_search_button_click())
search_button.pack(side=tk.LEFT, padx=5)
# 创建左边列表框
left_paned_frame = tk.Frame(root)
left_paned_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True, padx=(2, 5))
left_listbox = tk.Listbox(left_paned_frame)
left_listbox.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
# 在左边列表框下方插入图片
image_path = os.path.join(script_dir, "logo.ico")
original_image = Image.open(image_path)
# 设置图像的目标大小,例如设置为宽度为400,高度为200
target_size = (80, 80)
# 尝试使用 Image.ANTIALIAS
try:
resized_image = original_image.resize(target_size, Image.ANTIALIAS)
except AttributeError:
# 如果出现AttributeError,可能是因为版本问题,尝试直接使用 ANTIALIAS
resized_image = original_image.resize(target_size, resample=3) # 3 对应 ANTIALIAS
photo = ImageTk.PhotoImage(resized_image)
label_image = tk.Label(left_paned_frame, image=photo)
label_image.image = photo
label_image.pack(side=tk.BOTTOM, pady=20) # 调整 pady 参数以适应您的布局
安装包下载地址
链接:https://pan.baidu.com/s/1kT0YBoDvb6nAuTePIUYbHw?pwd=0owu
提取码:0owu