UNIXで動作する.htpasswdを編集するperlスクリプト(CGIプログラム)をWindowsで動作するように改造するときは Crypt-PasswdMD5-1.3 というperlモジュールを使うと簡単です。
はじめにCrypt-PasswdMD5-1.3をインストールします。 perlモジュールのインストール方法がわからないときは、前述のアドレスから Crypt-PasswdMD5-1.3.tar.gzというファイルをダウンロードします。
Crypt-PasswdMD5-1.3.tar.gzを解凍すると次のようなディレクトリとファイルが作成されます。この中からPasswdMD5.pmというファイルを perlスクリプトのカレントディレクトリかライブラリを格納するディレクトリにコピーします。このときCryptというディレクトリを作成し、ファイル名はCrypt/PasswdMD5.pmとします。
Crypt-PasswdMD5-1.3/
README
PasswdMD5.pm
META.yml
MANIFEST
Makefile.PL
Crypt-PasswdMD5-1.3/t/
basic.t
.htpasswdを編集するperlスクリプト(CGIプログラム)の中に、次のようにcrypt関数を使用してパスワードを認証している部分があると思います。このcrypt関数をapache_md5_crypt関数に置き換えます。引数は同じままで大丈夫です。
#my $ok = crypt($password, $crypted);
use Crypt::PasswdMD5;
my $ok = apache_md5_crypt($password, $crypted);
同じようにcrypt関数を使用してパスワードを暗号化している部分があると思います。このcrypt関数をapache_md5_crypt関数に置き換えます。引数は同じままで大丈夫です。
#my $crypted = crypt($password, $salt);
use Crypt::PasswdMD5;
my $crypted = apache_md5_crypt($password, $salt);
perlスクリプト(CGIプログラム)の改造はこの2点です。これでUNIX版のapacheで動作したものが、Windows版のapacheでも動作するようになります。
ただし、依然としてUNIXとWindowsで暗号化の方式が異なりますので、 UNIXで編集した.htpasswdファイルをWindowsで使うことや、 Windowsで編集した.htpasswdファイルをUNIXで使うことはできません。そのためUNIXとWindowsとの間で.htpasswdファイルを使い回すときは別の方法が必要となるでしょう。