В данной статье я хочу показать, как можно определить тип хэша. Не будем упомянать, для каких целей может быть полезен данный скрипт(может быть даже для мирных). Очень часто программисты применяют хэширование для защиты данных или шифрования паролей, но бывает надо срочно восстановить свой пароль, ри известном хэше, когда лень вчитываться в чужой код.
Следующий код поможет определить тип хэша:
<?php
$hash=array(array('md3, md4 hmac, md5, md5 hmac, ripmed 128, NTHash, LM, MacroHash','/^[a-zA-Z0-9]{32}$/'),
array('md4 base64, md5 base64,','/^[a-zA-Z0-9/+]{22}==[a-zA-Z0-9/]{3}=$/'),
array('md5 Unix,','/^$d$[Dd]*$[a-zA-Z0-9./]{22}$/'),
array('md5 APR,','/^$apr1$[Dd]*$[a-zA-Z0-9./]{22}$/'),
array('mysql,','/^[a-zA-Z0-9]{16}$/'),
array('sha-1 base64,','/^[a-zA-Z0-9/+=]{28}$/'),
array('mysql5, sha-1, sha-1 hmac, ripmed 160,','/^[a-zA-Z0-9]{40}$/'),
array('sha-256, ГОСТ Р34.11-94, ripmed 256,','/^[a-zA-Z0-9]{64}$/'),
array('ripmed 320,','/^[a-zA-Z0-9]{80}$/'),
array('sha-384,','/^[a-zA-Z0-9]{98}$/'),
array('crc16, crc16-ccitt,','/^[a-zA-Z0-9]{4}$/'),
array('crc32, crc32b, GHash-32, Adler32','/^[a-zA-Z0-9]{8}$/'),
array('sha-512,','/^[a-zA-Z0-9]{128}$/'));
if(!empty($_POST['hash1'])){
$hashstr='';
for($i=0;$i<count($hash);$i++){
if(preg_match($hash[$i]['1'],$_POST['hash1']))$hashstr.=$hash[$i]['0'];
}
if(!empty($hashstr))echo('Это похоже на '.$hashstr.' <hr>');
else echo('Хэш не определён,<hr>');
}
echo '<form method="post"><input type="text" name="hash1" value=""><input type="submit
Ничего слохного в коде нет, мы просто полученный ранее хэш обрабатываем по массиву заданных Regex выражений.