Perlでパスワード保護をするには?

[上に] [前に] [次に]
やす ~y(^o^)oO○ [E-Mail] [HomePage] 1998/08/18(火) 01:43:30
ぜひ教えてください。
「BBS等で入力させたパスワードをそのままファイルに登録していたら良くないって話があり、
何か命令をかまして書き込むとファイルの中を直接見ても暗号化されていて、
解読するにもある命令でおこなう」
ってのがありました。だれかこの命令と使い方を教えてください。

ひろぼー 1998/08/18(火) 23:39:59
crypt関数で暗号化して保存するのが良いです。
 $salt = "..";
 $epass = crypt($password, $salt);
として、$epass を保存しておきます。
解読する命令はありません。
照合は、同じ処理を施して同じ結果が出れば同じパスワードと判定します。
 if ($epass eq crypt($password, $salt)) { パスワード一致! }

$salt を固定にせず、[A-Za-z0-9./] の64文字から
ランダムに選んだ二文字にすると、より解読が難しくなります。
 $ctab = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 srand();
 $salt = substr($ctab,int(rand(64)),1) . substr($ctab,int(rand(64)),1);

$salt は $epass の先頭二文字に自動的に入っているので、
照合では $salt の代わりに $epass 自体も使えます。
 if ($epass eq crypt($password, $epass)) { パスワード一致! }

やす ~y(^o^)oO○ [E-Mail] 1998/08/18(火) 23:58:28
[[解決]]
ひろぼーさん有り難うございました。
とってもためになりました。・・・まだ試してないけど
どうにかいきそうです。

[上に] [前に] [次に]