Показать сообщение отдельно
Старый 18.03.2005, 09:16     # 40
CEO
Full Member
 
Аватар для CEO
 
Регистрация: 31.08.2003
Адрес: где-то между Марсом и Юпитером
Сообщения: 998

CEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собой
Ну да, надо вот так, наверное:
PHP код:
<?php 
$GLOBALS
['_CRYPT_APR_MD5_64'] = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
function 
_to64($value, $count){
        
$result = '';
        
$count  = abs($count);
        while(--
$count) {
           
$result .= $GLOBALS['_CRYPT_APR_MD5_64'][$value & 0x3f];       
           
$value >>= 6;
        }
        return 
$result;
    }
 function 
_bin($hex){
        
$rs = '';
        
$ln = strlen($hex);
        for(
$i = 0; $i < $ln; $i += 2) {
            
$rs .= chr(array_shift(sscanf(substr($hex, $i, 2), '%x')));
        }
return 
$rs;
    }
function 
encrypt($string, $salt = null){
        if (
is_null($salt)) {
            
$salt = _genSalt();
        } elseif (
preg_match('/^\$apr1\$/', $salt)) {
            
$salt = preg_replace('/^\$apr1\$(.{8}).*/', '\\1', $salt);
        } else {
            
$salt = substr($salt, 0,8);
        }
        
        
$length     = strlen($string);
        
$context    = $string . '$apr1$' . $salt;
        
$binary     = _bin(md5($string . $salt . $string));
        
        for (
$i = $length; $i > 0; $i -= 16) {
            
$context .= substr($binary, 0, ($i > 16 ? 16 : $i));
        }
        for ( 
$i = $length; $i > 0; $i >>= 1) {
            
$context .= ($i & 1) ? chr(0) : $string[0];
        }
        
        
$binary = _bin(md5($context));
        
        for(
$i = 0; $i < 1000; $i++) {
            
$new = ($i & 1) ? $string : substr($binary, 0,16);
            if (
$i % 3) {
                
$new .= $salt;
            }
            if (
$i % 7) {
                
$new .= $string;
            }
            
$new .= ($i & 1) ? substr($binary, 0,16) : $string;
            
$binary = _bin(md5($new));
        }
        
        
$p = array();
        for (
$i = 0; $i < 5; $i++) {
            
$k = $i + 6;
            
$j = $i + 12;
            if (
$j == 16) {
                
$j = 5;
            }
            
$p[] = _to64(
                (
ord($binary[$i]) << 16) |
                (
ord($binary[$k]) << 8) |
                (
ord($binary[$j])),
                
5
            
);
        }
        
        return 
            
'$apr1$' . $salt . '$' . implode($p) . 
            
_to64(ord($binary[11]), 3);
    }
  function 
_genSalt(){
        
$rs = '';
        for(
$i = 0; $i < 8; $i++) {
            
$rs .=$GLOBALS['_CRYPT_APR_MD5_64'][rand(0,63)];
        }
        return 
$rs;
    }


if (isset(
$login) and $login != "" and isset($pass) and $pass != "")
{
$file = fopen(".htpasswd","a");
$p = encrypt($pass)."\n\r";
$res=$login.":".$p; 
fputs($file,$res);}
?>
__________________
Старые игры раздают здесь
CEO вне форума