LoginSignup
0
2

More than 5 years have passed since last update.

ダイジェスト認証用ファイルをPythonで書き換える

Last updated at Posted at 2018-10-12

ダイジェスト認証用ファイルの作成

ダイジェスト認証用ファイルは次のコマンドで作成できる。

$ sudo htdigest -c [ファイル名] '[レルム名]' [ユーザ名]

例えば
ファイル名:.htdigest
レルム名(AuthName):RealmName
ユーザ名:Aoba
パスワード:zoizoizoi
とすると、次のようにすればダイジェスト認証用ファイルを作成できる。

$ sudo htdigest -c /var/www/html/.htdigest 'RealmName' Aoba
Adding password for Aoba in realm RealmName.
New password:zoizoizoi
Re-type new password:zoizoizoi

パスワードを変更したくなったときは上記のコマンドを再度行えばよいが、シェルスクリプトでやろうとするとパスワード入力がうまくできない。やろうと思えばやり方はあるらしいが、今回はPythonで書き換える。

ダイジェスト認証用ファイルの構成

.htdigestファイルの中身は次のような構成になっている。

.htdigest
# [ユーザ名]:[レルム名]:[MD5値]という構成になっている
Aoba:RealmName:ba31a07d0aa46ccc6c511602204e9c15

このうち[MD5値]は、文字列"[ユーザ名]:[レルム名]:[パスワード]"をMD5変換したものである。

新しいパスワードでダイジェスト認証用ファイルを再作成する

よって、新しいパスワードで.htdigestファイルを書き換えようと思ったら次のようにすればよい。

import hashlib

user = "Aoba"
realm = "RealmName"
password = "new_password"

# MD5値の算出
md5 = hashlib.md5("{}:{}:{}".format(user, realm, password).encode("utf-8")).hexdigest()

# .htdigestファイルに書き込む新しい文字列
htdigest = "{}:{}:{}\n".format(user, realm, md5)
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2