htpasswdで8文字以上のパスワードを設定する

先日これで軽くハマったので備忘的に。


Apacheでベーシック認証を行う場合、「htpasswd」コマンドで
パスワードファイルを作成します。


8文字以上のパスワードを付けたい場合は、「-m」オプションを付けて、
パスワードの暗号化アルゴリズムMD5にする事。


例: # htpasswd -c -m [パスワードファイル] [ユーザー名]


理由は何も指定しないとデフォルトの暗号化アルゴリズム
cryptが使われるから。


頑張ってソースコードを見てみました。
(httpd-2.2.17/support/htpasswd.cのmkrecord関数内)

    204 #if !(defined(WIN32) || defined(NETWARE))
    205     case ALG_CRYPT:
    206     default:
    207         if (seed_rand()) {
    208             break;
    209         }
    210         to64(&salt[0], rand(), 8);
    211         salt[8] = '\0';
    212 
    213         apr_cpystrn(cpw, (char *)crypt(pw, salt), sizeof(cpw) - 1);
    214         break;
    215 #endif


こんな感じになっておりました。
多分ここでいいと思いますが・・・。


main 関数内で初期値として、case文評価で使われている変数「alg」が

431     int alg = ALG_CRYPT;


となっていたし。


今日はこんな所で。