PasswordCrypto is a powerful Python library that allows users to securely store and retrieve passwords for various websites. It helps users encrypt, store, and manage sensitive login information, ensuring that their online security is maintained. This library implements robust encryption algorithms to protect data, making it an essential tool for anyone concerned about password security in the digital age.
In this article, we will explore the various functionalities of the PasswordCrypto Python library. We will begin by learning how to install the library on your system. Then, we will discuss what PasswordCrypto is, why it’s needed, and its benefits. After that, we will implement the core functionalities in Python, starting with initializing a password manager, securely storing passwords, retrieving stored passwords, and storing sensitive text within the password manager. By the end of this article, you will have a strong understanding of PasswordCrypto and be equipped to securely store sensitive information without relying on browser storage, which can be compromised.
Installation
To install the PasswordCrypto library, simply run the following command in your terminal:
pip install passwordcrypto
About PasswordCrypto
In an era where data breaches and password leaks are increasingly common, having a robust password manager is crucial. The PasswordCrypto library offers an easy way to implement secure password storage with encryption techniques that ensure that even if the password file is compromised, the actual passwords remain protected.
API Reference
The PasswordCrypto library provides many functions to handle different operations in the password management system.
- generate_key_from_password(password: bytes) -> Fernet: This function creates a Fernet key from the user's password to ensure secure encryption options.
- class Passwd(filename: str, key: bytes) -> None: This is the main class for interacting with the password manager. It initializes the manager, reads and writes encrypted passwords, and encrypts sensitive text.
- filename (str): The name of the file to store encrypted passwords.
- key (bytes): The Fernet key used for encryption and decryption.
- getEncryptedPasswds() -> list[bytes]: Retrieves encrypted passwords from the file.
- read() -> list[list[str]]: Decrypts the stored passwords and returns them in a structured format.
- encrypt(text: str) -> bytes: Encrypts a given text.
- write(app: str, email: str, password: str) -> None: Adds new password entries to the file.
- app (str): Application or service name.
- email (str): Email address used for the service.
- password (str): The password for the specified service.
Initialization
Before using PasswordCrypto, let’s initialize the password manager by setting a master password, which will be used to encrypt and decrypt the stored passwords. We will import the passwordcrypto library, take the master password as input, convert it to bytes, and specify a filename where passwords will be stored. Finally, we'll initialize the password manager.
import passwordcrypto
password = bytes(input("Enter your master password: ").encode("utf-8"))
filename = 'my_passwords.txt'
password_manager = passwordcrypto.Passwd(filename, password)
OUTPUT:
Enter your master password: adil2002
Writing Passwords
The first functionality is to securely store website login credentials. Define the website name, email address, and password, then use the write()
function of the initialized password manager.
# Storing a new password for a website
website_name = 'Geeksforgeeks'
email_address = 'adil.m.naib@gmail.com'
user_password = 'EnterYourSecurePassword!'
password_manager.write(website_name, email_address, user_password)
print("New Geeksforgeeks password stored successfully.")
# Storing a new password for a website
website_name = 'Facebook'
email_address = 'adil.m.naib@gmail.com'
user_password = 'FacebookSecurePassword!'
password_manager.write(website_name, email_address, user_password)
print("New Facebook password stored successfully.")
OUTPUT:
New Geeksforgeeks password stored successfully.
New Facebook password stored successfully.
Reading Passwords
You can view the saved passwords using the read()
function, which returns all stored entries. Iterate through these entries to display the website, email, and password.
password_entries = password_manager.read()
print("Stored Website Credentials:")
for entry in password_entries:
print(f"Website: {entry[0]}, Email: {entry[1]}, Password: {entry[2]}")
OUTPUT:
Stored Website Credentials:
Website: Geeksforgeeks, Email: adil.m.naib@gmail.com, Password: EnterYourSecurePassword!
Website: Facebook, Email: adil.m.naib@gmail.com, Password: FacebookSecurePassword!
Encrypt Text
Besides storing passwords, PasswordCrypto also allows encrypting sensitive personal text, such as API keys or private notes, using the encrypt()
function.
text_to_encrypt = 'My secure note for Facebook login.'
encrypted_text = password_manager.encrypt(text_to_encrypt)
print(f"Encrypted note: {encrypted_text}")
OUTPUT:
Encrypted note: b'gAAAAABmxuN0IvVQCHTyEFo0FWTcFBpvSEi5WsjpRYX4nccHFGRv4HqPS74X1KHXoOtS3OG6WPWURt76Hzgf7xQG-TmQcIchgswjgskKfJD_gCiOGmlrUgYkgqCM46B-d6eZ1uu-DMMv'