Pythonでのパスワード管理システムの作成 – Pythonで始めるプログラミング

Pythonでのパスワード管理システムの作成 – Pythonで始めるプログラミング

Pythonはそのシンプルさと強力な機能により、パスワード管理システムの作成に最適です。今回は、Pythonを使って基本的なパスワード管理システムを作成する方法を説明します。

はじめに

まず、必要なライブラリをインストールします。必要なライブラリには、標準のSQLite(外部リンク)と、パスワードのハッシュ化に使用するbcrypt(外部リンク)があります。

環境の設定

  1. Pythonのインストール
  2. 必要なライブラリのインストール

ライブラリのインストール

pip install bcrypt

データベースの設定

次に、SQLiteを使用してデータベースを設定します。

import sqlite3

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

if __name__ == '__main__':
    initialize_db()

パスワードのハッシュ化

パスワードを安全に保存するために、bcryptを使ってパスワードをハッシュ化します。

import bcrypt

def hash_password(password):
    return bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())

def verify_password(stored_password, provided_password):
    return bcrypt.checkpw(provided_password.encode('utf-8'), stored_password)

hashed = hash_password('my_secure_password')
print(hashed)

ユーザーの登録

次に、新しいユーザーを登録する関数を作成しましょう。

def register_user(username, password):
    hashed_password = hash_password(password)
    conn = sqlite3.connect('passwords.db')
    c = conn.cursor()
    try:
        c.execute('''
            INSERT INTO users (username, password)
            VALUES (?, ?)
        ''', (username, hashed_password))
        conn.commit()
    except sqlite3.IntegrityError:
        print("ユーザー名が既に存在します")
    conn.close()

ユーザーの認証

最後に、ユーザーを認証する関数を作成します。

def authenticate_user(username, password):
    conn = sqlite3.connect('passwords.db')
    c = conn.cursor()
    c.execute('''
        SELECT password FROM users WHERE username=?
    ''', (username,))
    user = c.fetchone()
    conn.close()
    if user and verify_password(user[0], password):
        return True
    return False

安全なパスワード管理は、セキュリティの基本です。定期的にパスワードを変更し、異なるサービスで異なるパスワードを使用することが推奨されます。

まとめ

このチュートリアルでは、Pythonで基本的なパスワード管理システムを作成する方法を学びました。さらに学びたい場合は、公式ドキュメントや他のリソースを訪れてください。例えば、Real Python(外部リンク)などがあります。

コメントを残す