MacroHash - новый алгоритм хэширования :)
Может кому-нибудь пригодится как альтернатива md5, брутеры для него сделают еще нескоро ;) , а по внешнему виду идеально похож на md5. Писал чисто для тренировки мозгов и освоения php.
- поддерживает только английские пароли. Скоро устраню этот недостаток. :)
PHP код:
<?php
if(!isset($_POST["pass"])){$a="example_password";}else{$a=$_POST["pass"];}
$body="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"><html><HEAD><META HTTP-EQUIV=Content-Type CONTENT=\"text/html; charset=windows-1251\"><title>MacroHash Algorithm</title></head><br><br><font size='5' color='green'>MacroHash Algorithm</font><br><br><br><center><b>Type below your password <u>without</u> spaces:<br></b><br><form method='POST' action=''><input type='text' name='pass' value='$a'><input type='submit'></form></center>";
function bi2he($s)
{
switch ($s){
case '0':
$t='30';break;
case '1':
$t='31';break;
case '2':
$t='32';break;
case '3':
$t='33';break;
case '4':
$t='34';break;
case '5':
$t='35';break;
case '6':
$t='36';break;
case '7':
$t='37';break;
case '8':
$t='38';break;
case '9':
$t='39';break;
case 'a':
$t='61';break;
case 'b':
$t='62';break;
case 'c':
$t='63';break;
case 'd':
$t='64';break;
case 'e':
$t='65';break;
case 'f':
$t='66';break;
case 'g':
$t='67';break;
case 'h':
$t='68';
break;
case 'i':
$t='69';
break;
case 'j':
$t='6a';
break;
case 'k':
$t='6b';break;
case 'l':
$t='6c';break;
case 'm':
$t='6d';break;
case 'n':
$t='6e';break;
case 'o':
$t='6f';break;
case 'p':
$t='70';break;
case 'q':
$t='71';break;
case 'r':
$t='72';break;
case 's':
$t='73';break;
case 't':
$t='74';break;
case 'u':
$t='75';break;
case 'v':
$t='76';break;
case 'w':
$t='77';break;
case 'x':
$t='78';break;
case 'y':
$t='79';break;
case 'z':
$t='7a';break;
case 'A':
$t='41';break;
case 'B':
$t='42';break;
case 'C':
$t='43';break;
case 'D':
$t='44';break;
case 'E':
$t='45';break;
case 'F':
$t='46';break;
case 'G':
$t='47';break;
case 'H':
$t='48';break;
case 'I':
$t='49';break;
case 'J':
$t='4a';break;
case 'K':
$t='4b';break;
case 'L':
$t='4c';break;
case 'M':
$t='4d';break;
case 'N':
$t='4e';break;
case 'O':
$t='4f';break;
case 'P':
$t='50';break;
case 'Q':
$t='51';break;
case 'R':
$t='52';break;
case 'S':
$t='53';break;
case 'T':
$t='54';break;
case 'U':
$t='55';break;
case 'V':
$t='56';break;
case 'W':
$t='57';break;
case 'X':
$t='58';break;
case 'Y':
$t='59';break;
case 'Z':
$t='5a';break;
case '!':
$t='21';break;
case '@':
$t='40';break;
case '#':
$t='23';break;
case '$':
$t='24';break;
case '%':
$t='25';break;
case '^':
$t='5e';break;
case '&':
$t='26';break;
case '*':
$t='2a';break;
case '(':
$t='28';break;
case ')':
$t='29';break;
case '_':
$t='5f';break;
case '-':
$t='2d';break;
case '=':
$t='3d';break;
case '+':
$t='2b';break;
case '[':
$t='5b';break;
case ']':
$t='5d';break;
case '{':
$t='7b';break;
case '}':
$t='7d';break;
case '^':
$t='5e';break;
case ',':
$t='2c';break;
case '.':
$t='2e';break;
case '<':
$t='3c';break;
case '>':
$t='3e';break;
case ':':
$t='3a';break;
case '|':
$t='7c';break;
case '/':
$t='2f';break;
default: $t='00';}
return $t;}
function b2h($bin)
{
$hex='';
for($i=0; $i<=strlen($bin)-1; $i++)
{$hex.=bi2he(substr($bin,$i,1));}
return $hex;
}
function summa($in)
{
$sm=0;
for($i=0; $i<=strlen($in-2); $i+=2)
{
$sm=$sm+hexdec(substr($in,$i,2));
}
$asdf2=explode(".",$sm/3.1415927);
return $asdf2[1];
}
function hash_1($string)
{
$b=b2h($string);
$str = '';
$c='';
for($i=0; $i<=strlen($b)-2; $i+=2)
{
$x=hexdec(substr($b,$i,2));
$c.=dechex($x+intval(strlen($string)*$x)+summa($b)/$x);
}
if (strlen($c)<=32)
{
$d='';
for($i=0; strlen($d)<=32; $i+=2)
{
$d.=dechex(intval((hexdec(substr($c,$i,2))+strlen($d))*summa($b)*$x));
}
$str=substr($d,strlen($d)-32,32);
}
elseif(strlen($c)>32)
{
$w='';
$c=substr($c,strlen($c)-5);
for($i=0; strlen($w)<=32; $i+=2)
{
$w.=dechex(intval((hexdec(substr($c,$i,2))+strlen($w))*summa($b)*$x));
}
$str=substr($w,0,32);
}
return $str;
}
if (empty($_POST["pass"]))
{
print("<title>MacroHash Algorithm</title>".$body);
}
elseif(isset($_POST["pass"]))
{
$a=$_POST["pass"];
$a1="";
print($body."<p><b>Password</b>: ".$a."<br><b>Hash:</b> ".hash_1($a)."</p>");
}
print("</html>");
?>
|