C言語関係掲示板

過去ログ

No.1167 Apacheのhtpasswdで作成したパスワードを認識したい

[戻る] [ホームページ]
No.15190

Apacheのhtpasswdで作成したパスワードを認識したい
投稿者---mummi(2004/07/04 10:52:40)


Apacheのhtpasswdで作成されたパスワードに対して
CのCGIでパスワードのファイルを読み込み、パスワードが正しいかどうかを認証させたいですが、どうですればいいでしょうか。
OSがLinuxです。

どうぞよろしくお願いします。




No.15197

Re:Apacheのhtpasswdで作成したパスワードを認識したい
投稿者---ぽこ(2004/07/04 17:28:44)


>Apacheのhtpasswdで作成されたパスワードに対して
>CのCGIでパスワードのファイルを読み込み、パスワードが正しいかどうかを認証させたいですが、どうですればいいでしょうか。

ユーザが入力したパスワードに対してhtpasswdをかけ、
実際のパスワードと比較するのでは駄目でしょうか?


No.15213

Re:Apacheのhtpasswdで作成したパスワードを認識したい
投稿者---mummi(2004/07/05 03:34:54)


>>Apacheのhtpasswdで作成されたパスワードに対して
>>CのCGIでパスワードのファイルを読み込み、パスワードが正しいかどうかを認証させたいですが、どうですればいいでしょうか。
>
>ユーザが入力したパスワードに対してhtpasswdをかけ、
>実際のパスワードと比較するのでは駄目でしょうか?

htpasswdのパラメータなどを確認しましたが、そのようなオプションはないようです。

htpasswdのパスワードの暗号化コードがMD5 algorithmを利用しているみたいです。
もう少しインターネットの情報を収集してみます。




No.15222

Re:Apacheのhtpasswdで作成したパスワードを認識したい
投稿者---ぽこ(2004/07/05 08:57:05)


>htpasswdのパラメータなどを確認しましたが、そのようなオプションはないようです。
>

htpasswd -nb 'username' 'passwd'
で標準出力にusername:crypt(passwd)の形式で出力されるようですが。。


No.15227

Re:Apacheのhtpasswdで作成したパスワードを認識したい
投稿者---mummi(2004/07/05 10:53:53)


>>htpasswdのパラメータなどを確認しましたが、そのようなオプションはないようです。
>>
>
>htpasswd -nb 'username' 'passwd'
>で標準出力にusername:crypt(passwd)の形式で出力されるようですが。。

なるほど、下記のスクリプトで入力されたパスワードの比較でできるようになりますね。
ありがとうございました!!!!
解決しました!!!!

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <time.h>


int main(int argc, char** argv)
{
    char *password,cmd[256];
    char *result,*ptr;
    char id,filename[80],str[512];
      FILE *    fp;

   sprintf(cmd,"/var/lib/httpd/bin/htpasswd -bn saya saya");

   if((fp=popen(cmd,"r"))==NULL){
     fprintf(stdout,"error!!!\n");
      exit(-1);
   }
   while(1){
     fgets(str,512,fp);
        if(feof(fp)){
        break;
        }
       ptr=strchr(str,'\n');
       if(ptr!=NULL){
           *ptr='\0';
        }
        printf("%s\n",str);
    }
    pclose(fp);

}