Выкладываю код который шифрует пароль.У самого времени совсем нет.Тому кто разберет большое спасибо +++++
Файл cr.php
PHP код:
<?php
$key = "mjkcHJID$%($+_XN90-gf0bnsdfhgapd'Q;2dfh hsdf9F,-GH9R";
//$txt2= encript_text4("текст для проверки ШИФРОВАНИЯ - дешифрования с использованием случайно сгенерированных цифровых ключей!","12345");
//echo $txt2."<br><br>";
//echo decript_text4($txt2,"12345");
function encript_text($text,$key,$base64_out=0)
{
$size=strlen($text);
$lenKey=strlen($key);
$c=0;
for($i=0;$i<$lenKey;$i++)
$c=chr( ord($c)+ord($key[$i]) );
$i=0;
$out="";
for($n=0;$n<$size;$n++)
{
$out.=chr(ord($text[$n])+ ord($c)+ord($key[$i]) );
$i++;
if($i==$lenKey)
$i=0;
}
if($base64_out)
return "aen".$out;
else
return "aen".base64_encode($out);
}
//////////////////////////////////////////
// с использованием случайно сгенерированных цифровых ключей
function encript_text3($text,$base64_out=0)
{
$crc32_str= crc32($text);// 9 или 10 символов
$text.="#".$crc32_str;
//exit("$text | ".strlen($text));
$size=strlen($text);
mt_srand(make_seed());
$lenKey=30;
$number=mt_rand(100,150);
$key=substr(bcpow(2,$number),0,$lenKey);
//exit("$key");
$i=0;
$out="";
for($n=0;$n<$size;$n++)
{
$out.=chr(ord($text[$n])+ ord($key[$i]) );
$i++;
if($i==$lenKey)
{
$out.=chr($number);// добавляется 1 символ в конец
$i=0;
$number=mt_rand(100,150);
$key=substr(bcpow(2,$number),0,$lenKey);
//exit("$out");
}
}
if($i)
$out.=chr($number);// добавляется 1 символ в конец
//exit("$out");
//$text = decript_text3($out,$base64_out);exit("$base64_out | $text | ".strlen($text));
if($base64_out)
return $out;
else
return base64_encode($out);
}
//////////////////////////////////////////
function encript_text2($text,$password,$key)
{
$password1=encript_text($text,$key);
$password2=encript_text($password1,$password);
$password2=str_replace("aen","aen2",$password2);
return $password2;
}
//////////////////////////////////////////
function encript_text4($text,$password,$base64_out=0)
{
$text=encript_text3($text,$base64_out);
//exit("$text");
//$text=decript_text3($text);exit("$text");
$text=encript_text($text,$password,$base64_out);
$text=str_replace("aen","axn",$text);
//$text = decript_text($text, $password);
//exit("$text");
return $text;
}
//////////////////////////////////////////////////////////
function decript_text($text,$key,$base64_out=0)
{
$text=substr($text,3);
if(!$base64_out)
$text=base64_decode($text);
$size=strlen($text);
$lenKey=strlen($key);
$c=0;
for($i=0;$i<$lenKey;$i++)
$c=chr( ord($c)+ord($key[$i]) );
$i=0;
$out="";
for($n=0;$n<$size;$n++)
{
$out.=chr(ord($text[$n])- (ord($c)+ord($key[$i])) );
$i++;
if($i==$lenKey)
$i=0;
}
//exit("$base64_out | $out | ".strlen($out));
return $out;
}
/////////////////////////////////////
function decript_text3($text,$base64_out=0)
{
if(!$base64_out)
$text=base64_decode($text);
$size=strlen($text);
//exit("$base64_out $text");
if(!$size)// потому что с другим паролем base64_decode может выдавать пустую стоку
return "Неправильный пароль...";
$lenKey=30;
$n=$size;
$out="";
while($n>$lenKey)
{
$number=ord(substr($text,$lenKey,1));
$key=substr(bcpow(2,$number),0,$lenKey);
$text0=substr($text,0,$lenKey);
for($i=0;$i<$lenKey;$i++)
{
$out.=chr(ord($text[$i])- ord($key[$i]) );
}
$text=substr($text,$lenKey+1);
$n-=$lenKey+1;
}///
if($n)
{
$number=ord(substr($text,$n-1));
$key=substr(bcpow(2,$number),0,$lenKey);
for($i=0;$i<$n-1;$i++)
{
$out.=chr(ord($text[$i])- ord($key[$i]) );
}
}
// exit("$base64_out | $out | ".strlen($out));
//$pos=strrpos($out,"#");// если не текстовые символы, то функция шизеет...
//exit("$out");
$len=strlen($out);
$hash="";
//exit("$len | ".$out[$len-1]);
$pos=0;
for($i=$len-1;$i>$len-14;$i--)
{
if($out[$i]=='#')
{$pos=$i;break;}
$hash=$out[$i].$hash;
}
//exit("$hash | $len | ");
if($pos===false)
return "Неправильный пароль...";
$text=substr($out,0,$pos);
$hash=substr($out,$pos+1);
$crc32_str= crc32($text);
if($hash!=$crc32_str)
return "Неправильный пароль...";
return $text;
}
/////////////////////////////////////
function decript_text2($text,$password,$key)
{
$pswd=str_replace("aen2","aen",$text);
//exit("$pswd");
$pswd = decript_text($pswd, $password);
//exit("!0 $pswd ");
$out = decript_text($pswd, $key);
return $out;
}
/////////////////////////////////////
function decript_text4($text,$password,$base64_out=0)
{
// exit("$base64_out $text");
$text = decript_text($text, $password,$base64_out);
//exit("$base64_out | $text | ".strlen($text));
$text = decript_text3($text,$base64_out);
return $text;
}
function check_pswrd($word_decrypted,$pswrd,$key)
{
$prefix=substr($pswrd,0,3);
//exit("! $pswrd | $prefix ".$pswrd[3]);
if($prefix=="aen")
{
if($pswrd[3]=="2")
{
$pswd = decript_text2($pswrd, $word_decrypted, $key);
//exit("!1 $pswd");
if($pswd == $word_decrypted)
return 1;
}
$pswd = decript_text($pswrd, $key);
//exit("!2 $pswd");
if($pswd == $word_decrypted)
return 1;
}
$pswd = crypt($word_decrypted, substr($word_decrypted, 0, 2));
//exit("!2 $pswd $pswrd");
if($pswd == $pswrd)
return 1;
return 0;
}
//$out=encript_text("привет","123");
//exit($out);
//exit(decript_text($out,"123"));
////////////////////////////////////////////////////////////
if(!function_exists("make_seed"))
{
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
}
?>
Пример зашифровки и расшифровки.
PHP код:
<?php
include("cr.php");
$key = "mjkcHJID$%($+_XN90-gf0bnsdfhgapd'Q;2dfh hsdf9F,-GH9R";
$password0="pfghjc0";
$password = encript_text2($password0,$password0,$key);
echo $password."----";
echo decript_text2($password,$password0,$key);
?>
|