
19.12.2007, 02:59
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 331
Провел на форуме: 1724067
Репутация:
806
|
|
Сообщение от -=lebed=-
Вот сделал функцию для распознавания типа хэша (пока только 4, точнее 3, так как хэши MySQL5 и SHA-1 неотличимы).
PHP код:
function type_hash($string)
{
if (ereg('^([a-fA-F0-9]{16})$', $string)) return 1; // MySQL
if (ereg('^([a-fA-F0-9]{32})$', $string)) return 2; // MD5
if (ereg('^([a-fA-F0-9]{40})$', $string)) return 3; // MySQL или SHA-1
return 0; // неизвестен
}
1.Как сделать тоже самое, используя функцию preg_match?
2. Помогите с регулярками для определения типов хэшей:
DES (пример:HlXOX8MN5z4X6),
MD5 (Unix) $1$$uqbusDeGY2YWqg.T2S1100
MD5(APR) $apr1$$kRqAZHnuzcwDL84Mm7oc1.
MD5(Base64) Gh3JHJBzJcaScd3wyUS8cg ==
SHA-1 (Base64) NU4eI71bcnBGqeO0t9tXvY1u5oQ =
1.
PHP код:
if (preg_match("/^([a-fA-F0-9]{16})$/",$string)) echo 'MySQL ';
if (preg_match("/^([a-fA-F0-9]{32})$/",$string)) echo 'MD5 ';
if (preg_match("/^([a-fA-F0-9]{40})$/",$string)) echo 'MySQL или SHA-1';
2.
также как ты и делал, только те символы что не изменяются просто вводишь (только перед доларом надо постави "\" )
итак пример для
MD5(APR) $apr1$$kRqAZHnuzcwDL84Mm7oc1.
/^\$arp1\$\$[a-zA-Z0-9]{21}$/
ПС:для написания и отладки регулярных выражений можно использовать специальные прожки, например, VisualREGEXP и The Regex Coach
|
|
|