Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Danilo Ramos

[Resolvido] Criptografar valores da URL (metodo GET)

Recommended Posts

Olá pessoal, sou desenvolvedor de php, porem não estou encontrando o erro nesse código, pois não funciona 100% alguem poderia me dar uma ideia do porque?

 

Ou se alguem tiver uma outra forma de criptografia que use uma chave.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>encrypt</title>
</head>
<body>
<?php
function Randomizar($iv_len){
    $iv = '';
    while ($iv_len-- > 0) {
        $iv .= chr(mt_rand() & 0xFF);
    }
    return $iv;
}

function encrypt_url($texto, $iv_len = 16){
    $texto .= "\x13";
	$texto = $texto;
    $n = strlen($texto);
    if ($n % 16) $texto .= str_repeat("\0", 16 - ($n % 16));
    $i = 0;
    $Enc_Texto = Randomizar($iv_len);
    $iv = substr($Enc_Texto, 0, 512);
    while ($i < $n) {
        $Bloco = substr($texto, $i, 16) ^ pack('H*', md5($iv));
        $Enc_Texto .= $Bloco;
        $iv = substr($Bloco . $iv, 0, 512);
        $i += 16;
    }
    return urlencode($Enc_Texto);
}

function decrypt_url($Enc_Texto, $iv_len = 16){
    //$Enc_Texto = base64_decode(urldecode($Enc_Texto));
	$Enc_Texto = urldecode($Enc_Texto);
    $n = strlen($Enc_Texto);
    $i = $iv_len;
    $texto = '';
    $iv = substr(substr($Enc_Texto, 0, $iv_len), 0, 512);
    while ($i < $n) {
        $Bloco = substr($Enc_Texto, $i, 16);
        $texto .= $Bloco ^ pack('H*', md5($iv));
        $iv = substr($Bloco . $iv, 0, 512);
        $i += 16;
    }
    return preg_replace('/\\x13\\x00*$/', '', $texto);
}
?>
<a href="?id=<?php print(encrypt_url('1110')); ?>">CLIQUE AQUI -- <?php print(decrypt_url($_GET['id'])); ?></a>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido pessoal..

 

Estava faltando incluir a base64_encode e decode no codigo...

 

Segue abaixo o codigo para quem quiser usar...

 

abraços

 

<?php
function Randomizar($iv_len){
    $iv = '';
    while ($iv_len-- > 0) {
        $iv .= chr(mt_rand() & 0xFF);
    }
    return $iv;
}

function encrypt_url($texto, $iv_len = 16){
    $texto .= "\x13";
	$texto = $texto;
    $n = strlen($texto);
    if ($n % 16) $texto .= str_repeat("\0", 16 - ($n % 16));
    $i = 0;
    $Enc_Texto = Randomizar($iv_len);
    $iv = substr($Enc_Texto, 0, 512);
    while ($i < $n) {
        $Bloco = substr($texto, $i, 16) ^ pack('H*', md5($iv));
        $Enc_Texto .= $Bloco;
        $iv = substr($Bloco . $iv, 0, 512);
        $i += 16;
    }
    return base64_encode(urlencode($Enc_Texto));
}

function decrypt_url($Enc_Texto, $iv_len = 16){
	$Enc_Texto = urldecode(base64_decode($Enc_Texto));
    $n = strlen($Enc_Texto);
    $i = $iv_len;
    $texto = '';
    $iv = substr(substr($Enc_Texto, 0, $iv_len), 0, 512);
    while ($i < $n) {
        $Bloco = substr($Enc_Texto, $i, 16);
        $texto .= $Bloco ^ pack('H*', md5($iv));
        $iv = substr($Bloco . $iv, 0, 512);
        $i += 16;
    }
    return preg_replace('/\\x13\\x00*$/', '', $texto);
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom, parabens! o metodo get é necessario para muitas aplicações encripitando os dados podemos programar com mais calma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Danilo,

 

Muito bom seu script.

A única coisa que eu questiono é a falta de uma chave secreta, pois no formato que está pode ser descriptografada sem a chave o que torna vulnerável, pois o script está publicado em um site de grande circulação.

 

Você concorda?

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.