PHP-ből Linux jelszavak ellenőrzése

Lehet hogy a tárgy kicsit megtévesztő, de a lényeg, hogy szeretnék egy PHP-s felületet ami a Linux-ra felvett felhasználókat beengedi a felületre, ...

A problémám a jelszavak ellenőrzése, azzal kellett szembesülnöm, hogy a jelszavak meglehetősen változatos formátumban lehetnek tárolva, ezért még a jelszó ellenőrzése előtt a hash algoritmust is vissza kell keresni, ...

A kérdésem, van erre valamilyen kész megoldás?

Csak néhány példa, hogy mire gondolok:


hash string                       kódolás
--------------------------------- -------
{CRYPT}$1$KgOfPNtz$9e40u....      MD5
$1$KgOfPNtz$9e40u....             MD5 (Debian 5)
9e40u....                         MD5, salt nélkül 
{CRYPT}$5$KgOfPNtz$9e40u....      SHA-256
$6$KgOfPNtz$9e40u....             SHA-512 (Debian 6)
{SHA}....                         SHA1
....

Egyébként LDAP-ból venném ki a jelszavakat

Hozzászólások

Szerintem ne bonyolítsd túl.

Gyors google:
http://code.activestate.com/recipes/101525-ldap-authentication/
Valami ilyesmire gondolj. Ha valóban LDAP végzi az authentikációt, akkor az majd megoldja a jelszó kezelését.
Te inkább valamilyen a fenti kódhoz hasonló módszerrel próbálj meg csatlakozni az LDAP-hoz. Ha megy akkor user/pass OK, ha nem akkor "Try Again".

Remélem segítettem.

Plussz php.net példa:
http://php.net/manual/en/function.ldap-bind.php

Elvileg müködö kód:
http://www.phpbuilder.com/board/showthread.php?t=10257921

<?php
	$pw = "plaintextpassword";
	$shadow = '$1$xJHGjkGJHgjhkxgkjasdgkjjghXJHG/';

	if (crypt($pw, $shadow) == $shadow) {
		echo "Correct";
	} else {
		echo "Mismatch";
	}
?>

--
HUPbeszolas FF extension

Ha csak beengedésről van szó, akkor esetleg sasl?
Nem teljesen tiszta egyébként, hogy itt most mi a cél, de ha autentikáció, akkor nekem az probléma lenne, hogy a /etc/shadow -t egy PHP alkalmazás tudja olvasni ...
Erre megoldást nyújthat egy PHP sasl lib + saslauthd.
Ha félreértettem, akkor bocs.

Szerk.:
Közben felfogtam, hogy a jelszavak LDAP-ban vannak és nem shadow-ban, szóval elnézést.