Copy & Paste Engineer

【Python】2段階認証コード(TOTP)を自作する方法【pyotpライブラリ活用】

【Python】2段階認証コード(TOTP)を自作する方法【pyotpライブラリ活用】

「2段階認証って便利だけど、いちいちスマホを取り出すのが面倒くさい…」 そんな風に感じたことはありませんか?

Pythonライブラリpyotpを使って、スマホを使わずに自分でTOTP認証コードを生成する方法をご紹介します。


🔐 そもそもTOTPって何?

TOTP(Time-based One-Time Password)は、一定時間ごとに変わるワンタイムパスワードのこと。 多くのサービスで使われている2段階認証の仕組みで、Google Authenticatorなどもこの方式です。

仕組みは以下の通りです:

これをサーバーとクライアント(例:認証アプリや自作ツール)が同時に行うことで、時刻同期されたコードをチェックできます。


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

まずはTOTPを簡単に扱えるPythonライブラリ pyotp をインストールします。

pip install pyotp

🧪 TOTP認証コードを生成してみよう

以下のPythonコードで、シークレットキーからTOTPコードを生成できます。

import pyotp

# シークレットキー(Google Authenticatorなどから取得したもの)
secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"  # 実際のキーに置き換えてください

# TOTP インスタンス生成
totp = pyotp.TOTP(secret)

# 現在時刻に対応する認証コード(6桁)
code = totp.now()

print("認証コード:", code)

✅ 実行結果(例)

認証コード: 123456

このコードは約30秒ごとに切り替わります。 複数回実行すると、そのたびに異なるコードが得られるはずです。


💡 実際にどんな場面で便利?

こうした場面では、このスクリプトを実行するだけで即コード取得できるので、時短&スマート!


⚠️ 注意点:セキュリティ意識は忘れずに!

便利とはいえ、シークレットキーをPC上に平文で保存しておくのはリスクがあります。 次のような対策がオススメです:

参考


🧭 まとめ

項目 内容
ライブラリ pyotp
入力 シークレットキー(Base32)
出力 時刻ベースの6桁コード
実行タイミング 任意。コードは30秒ごとに変化

スマホを取り出す手間を省き、自分のPCで手軽にTOTPコードを生成できるというのはかなり便利な工夫です。 ぜひあなたの開発・運用環境に取り入れてみてください!