Pythonでのパスワード管理システムの作成 – Pythonで始めるプログラミング
Pythonはそのシンプルさと強力な機能により、パスワード管理システムの作成に最適です。今回は、Pythonを使って基本的なパスワード管理システムを作成する方法を説明します。
はじめに
まず、必要なライブラリをインストールします。必要なライブラリには、標準のSQLite(外部リンク)と、パスワードのハッシュ化に使用するbcrypt(外部リンク)があります。
環境の設定
- Pythonのインストール
- 必要なライブラリのインストール
ライブラリのインストール
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(外部リンク)などがあります。