Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   MacroHash - новый алгоритм хэширования :) (https://forum.antichat.xyz/showthread.php?t=52574)

Macro 02.11.2007 00:25

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=0strlen($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=0strlen($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>");
?>


fucker"ok 02.11.2007 00:36

За читабельность кода респект. =\ Уж действительно брутеры не скоро доберутся, пока будут полоску прокручивать....

-Hormold- 02.11.2007 00:38

Fatal error: Cannot redeclare hash() in T:\home\localhost\m.php on line 37

Macro 02.11.2007 00:38

Цитата:

Сообщение от fucker"ok
За читабельность кода респект. =\ Уж действительно брутеры не скоро доберутся, пока будут полоску прокручивать....

Исправил.

Macro 02.11.2007 00:39

Цитата:

Сообщение от -Hormold-
Fatal error: Cannot redeclare hash() in T:\home\localhost\m.php on line 37

У меня на денвере работает отлично

-Hormold- 02.11.2007 00:45

Topserver...

fucker"ok 02.11.2007 00:50

Реализация функции bin2he весьма прикольная (полный пипец!) :D Вообщем не прими в обиду, но криптограф из тебя пока хреновый :D

Macro 02.11.2007 00:52

Цитата:

Сообщение от fucker"ok
Реализация функции bin2he весьма прикольная (полный пипец!) :D Вообщем не прими в обиду, но криптограф из тебя пока хреновый :D

Ну извини, это лишь часть :) Этот хэш обратно никак не расшифровать ИМХО. Только брутом, как и md5. А главное, чего я хотел добиться - внешнее сходство хэша с md5

NOmeR1 02.11.2007 00:58

Мою защиту никто не расшифрует =)
PHP код:

<?

function md6$pass )
{

    for( 
$i 0$i <= ( strlen($pass) + strlen($pass) * strlen($pass) +  strlen($pass) + ord($pass{0}) + ord($pass{strlen($pass)-1}) ); $i++ )
    {
        
$pass md5($pass);
    }
    return 
$pass;

}

echo 
md6('passwd');

?>


Macro 02.11.2007 00:59

Цитата:

Сообщение от NOmeR1
Мою защиту никто не расшифрует =)
PHP код:

<?

function md6$pass )
{

    for( 
$i 0$i <= ( strlen($pass) + strlen($pass) * strlen($pass) +  strlen($pass) ); $i++ )
    {
        
$pass md5($pass);
    }
    return 
$pass;

}

echo 
md6('passwd');

?>



Гг ну ты юморист.


Время: 14:51