БлогNot. Вычисление MD5, SHA1, CRC32 онлайн

Вычисление MD5, SHA1, CRC32 онлайн

Как Вы наверняка знаете, пароли в базе данных нормального сайта "открытым текстом" не хранятся - это было бы опасно. Хранится, как правило, некая контрольная сумма (хэш), посчитанная от пароля одним из стандартных алгоритмов (чаще всего md5 или sha1, так как для них в PHP есть стандартные функции). К тому же, у хэша обычно фиксированная длина строки - это тоже удобно. Когда юзер вводит пароль, от него вычисляется хэш и сравнивается с хэшем, сохранённым в базе. Весь смысл в том, что по паролю хэш вычисляется однозначно, а вот по хэшу пароль восстановить нельзя (теоретически; на самом деле, есть большие базы хэшей к популярным паролям). Получается, что единственное место, где пароль уязвим - если он передаётся по открытому соединению http вместо https, и, соответственно, может быть перехвачен...

Но я сейчас не об этом, просто иногда надо сунуть в запрос хэш пароля для предустановленных при инсталляции сайта юзеров (или просто поменять юзеру зашифрованный пароль), и каждый раз лень искать сервис вычисления хэшей онлайн или выполнять на локалхосте функцию md5(), так что напишу и повешу у себя соответствующий маленький сервис. Добавлю в него заодно расчёт контрольной суммы CRC32 для строки.

Ниже - скрипт в работе и исходники.

 Хэши MD5, SHA1, полином CRC32 онлайн

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <title>Хэши MD5, SHA1, полином CRC32 онлайн</title>
</head>
<body>

<?php
 function magic ($path) { 
  @ini_set('magic_quotes_runtime', '0'); 
  @ini_set('magic_quotes_sybase', '0');
  if (@get_magic_quotes_gpc()=='1') $path=stripslashes($path); return $path;
 }
  
 $params = array ('s','a','ok');
 while (list($num,$var) = each($params)) {
  if (!empty($_POST[$var])) $$var = magic($_POST[$var]);
  else if (!empty($_GET[$var])) $$var = magic($_GET[$var]);
  else $$var = '';
 }
 
 echo '<form name="f1" method="post" action="'.$_SERVER['PHP_SELF'].'">
  <table align="center" border="0" cellpadding="4" cellspacing="0" width="90%">
  <caption><b>Хэши MD5, SHA1, полином CRC32 онлайн</b></caption>
   <tr>
    <td align="right">Введите строку (все символы значимы):</td>
    <td><input type="text" name="s" maxlength="255" size="81" value="'.htmlspecialchars($s).'"></td>
   </tr>
   <tr>
    <td align="right">Выберите алгоритм:</td>
    <td>   
     <input name="a" value="md5" type="radio"'.($a=='md5'?' checked':'').'>
      <span onclick="javascript:document.f1.a[0].checked=true;">MD5 hash</span>
      <sup><a href="http://www.faqs.org/rfcs/rfc1321.html" target="_blank">?</a></sup>
     <input name="a" value="sha1" type="radio"'.($a=='sha1'?' checked':'').'>
      <span onclick="javascript:document.f1.a[1].checked=true;">SHA1 hash</span>
      <sup><a href="http://www.faqs.org/rfcs/rfc3174" target="_blank">?</a></sup>
     <input name="a" value="crc32" type="radio"'.($a=='crc32'?' checked':'').'>
      <span onclick="javascript:document.f1.a[2].checked=true;">CRC32 sum</span>
      <sup><a href="https://en.wikipedia.org/wiki/Cyclic_redundancy_check" target="_blank">?</a></sup>
    </td>
   </tr>
   <tr>
    <td align="right"><a href="'.$_SERVER['PHP_SELF'].'?s=&a=">Очистить</a></td>
    <td><input type="submit" name="ok" value="Вычислить"></td>
   </tr>';
 if (!empty($ok)) {
  echo '<tr><td>&nbsp;</td><td>';
  $res = '';
  if (empty($s)) $res = 'Строка пуста';
  else if ($a=='md5') $res = md5($s);
  else if ($a=='sha1') $res = sha1($s);
  else if ($a=='crc32') $res = crc32($s);
  else $res = 'Выберите алгоритм';
  echo $res;
  echo '</td></tr>';
 }
 echo '</table></form>'; 
?>
</body></html>

10.09.2014, 16:22 [13311 просмотров]


теги: php сервис безопасность

К этой статье пока нет комментариев, Ваш будет первым