Q. パスワード用の secure hash の生成方式として MD5 を使っていますが、 perl(1) などのスクリプトや C 言語のプログラムで crypt(3) を 使うと DES になってしまいます。perl などからも MD5 を利用するのに はどうしたらいいのでしょうか? A. /etc/auth.conf に crypt_default = md5 を入れてください。これで直ちに perl の crypt 関数で MD5 が 使えるようになります。また、blowfish を使う場合も同様で、 crypt_default = blf という指定を行えば使えます。ただし、ユーザ毎にこれを変更する方法は ありません。 C 言語のプログラムから動的に secure hash の生成方式を変更 することは可能で、具体的には crypt_set_format(3) を使います。 次が切替えのサンプルプログラムです。 ---サンプル ここから--- #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { char *salt = "Salt"; char *pass = "pass"; crypt_set_format("des"); printf("DES: %s\n", crypt(pass, salt)); crypt_set_format("md5"); printf("MD5: %s\n", crypt(pass, salt)); crypt_set_format("blf"); printf("Blowfish: %s\n", crypt(pass, salt)); return 0; } ---サンプル ここまで--- これを例えば hash_test.c に入れて、 % cc -o hash_test hash_test.c -lcrypt としてコンパイルして、実行すると DES: Safj2rfnJqVOw MD5: $1$Salt$waybwAhVEO4TqNqokkPGS/ Blowfish: $2a$04$Salt..................iuF.iYZyE5m5qX55B4pXbGQonP.kj5y という結果を得ます。なお、上のプログラムは切替え方を示すサンプル に過ぎないので、実際には指定すべき salt の長さなどについて考慮する 必要があります。
グループ名: des