While Recently Learning a Python development course on Udemy, I stumbled across a fascinating project idea: creating a password manager. With data security becoming more essential than ever, a password manager seemed like a valuable project, one that would combine both practical coding skills and a deeper understanding of data protection. In this article, I'll take you through the steps to build a basic password manager in Python, where we'll use encryption to keep stored passwords safe.

Introduction

Today, a secure password manager is almost a necessity. With so many accounts and passwords to remember, managing them securely without having to rely on external tools feels both satisfying and educational. In this project, we’ll create a password manager in Python that stores passwords in an encrypted format. Using SQLite, we'll handle local storage, and with the cryptography library, we'll add encryption and decryption capabilities.

Project Setup

Here are the main tools and libraries we’ll use:

To get started, install cryptography by running:

pip install cryptography

We’ll set up the following files to keep our project organized:

Step 1: Setting Up the Database

For our password manager, we need to store usernames and passwords securely. SQLite is a great option because it’s lightweight and easy to set up.

  1. Database Structure

    The main table will be called passwords, with three fields:

  2. Creating the Database Here’s a function to set up our SQLite database:

    import sqlite3
    def create_database():
        conn = sqlite3.connect('passwords.db')
        cursor = conn.cursor()
        cursor.execute('''CREATE TABLE IF NOT EXISTS passwords (
                             id INTEGER PRIMARY KEY,
                             service_name TEXT NOT NULL,
                             username TEXT NOT NULL,
                             password TEXT NOT NULL)''')
        conn.commit()
        conn.close()
    

With this, we’ve set up a table to hold the encrypted passwords securely.

Step 2: Encryption and Decryption with Cryptography

Now we’ll set up encryption to keep our passwords safe. Using Python’s cryptography library, we’ll work with Fernet encryption, which is ideal for securing data locally.