ユーザー名とパスワードから、Apache の .htpasswd ファイルに使う user:hash の 1 行を作ります。平文・crypt・apr1・SHA-1・bcrypt のすべてをブラウザー内で計算し、openssl passwd・Apache の htpasswd・glibc の crypt で検証済み。パスワードはタブの外に出ません。
ブラウザ内でローカルに実行ユーザー名とパスワードを入力し、形式を選んで「htpasswd エントリーを生成」を押してください。.htpasswd ファイルにそのまま追記できる user:hash の 1 行を返し、貼り付ける前に選んだ形式の注意点を表示します。
ハッシュはすべてブラウザー内で計算されます。apr1 のエントリーは openssl passwd -apr1 と htpasswd -m に、bcrypt は htpasswd -B が書き出す $2y$ 行に、SHA-1 は htpasswd -s の {SHA} 形式に一致します。パスワードは送信されず、入力中もタブ外へのリクエストは発生しません。
plain はパスワードをそのまま保存し、httpd が受け入れるのは Windows と Netware だけです。crypt は古い Unix のルーチンで、13 文字・2 文字のソルト・パスワードの先頭 8 文字だけを使い、それ以降は黙って捨てられます。長いパスフレーズの強度がここで失われる理由です。
MD5 (apr1) は $apr1$ソルト$ハッシュ を書き出します。パスワードと 8 文字のソルトに MD5 を 1000 回適用する Apache 独自の方式で、htpasswd -m の出力です。SHA-1 は {SHA} に続けて SHA-1 ダイジェストの base64 を書きます。他の形式と違いソルトがないため、同じパスワードは常に同じ行になります。bcrypt は $2y$コスト$ソルト$ハッシュ を書き、16 バイトのランダムなソルトと 2^コスト 回の鍵計算を使います。
.htpasswd ファイルはアカウントごとに user:hash を 1 行持ち、Apache が AuthUserFile で読み込みます。最小構成の保護ディレクトリは AuthType Basic、AuthName "Restricted"、AuthUserFile /etc/apache2/.htpasswd、Require valid-user です。ファイルはドキュメントルートの外に置き、Web サーバーのユーザーだけが読めるようにしてください。
コマンドラインでは htpasswd が同じ行を作ります。-B が bcrypt(-C でコスト指定)、-m が apr1、-s が SHA-1、-d が crypt です。1 つのファイルに形式を混在できるため、古い crypt の行と新しい bcrypt の行は同居できます。各行は htpasswd -vb ファイル名 ユーザー名 で確認できます。
HTTP ベーシック認証はリクエストごとにパスワードを base64 で送るため、接続は HTTPS でなければなりません。ハッシュが守るのはファイルであり、通信路ではありません。crypt・SHA-1・apr1 は計算が速く、それはファイルを盗んだ攻撃者にとって都合のよい性質です。新しいエントリーには bcrypt を使い、アカウントに触れるたびに古い行を置き換えてください。
このジェネレーターはパスワードを保存も送信もしません。計算はページ内で行われ、ソルトはブラウザーの乱数生成器から取得します。コスト 10 はここで約 0.2 秒、コスト 12 は約 1 秒かかるため、htpasswd が 17 まで受け付けてもフィールドは 14 で止まります。