Ir para conteúdo

POWERED BY:

Arquivado

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

fernandotholl

[Resolvido] Erro na forma de Codificar a senha

Recommended Posts

Editado [Código corrigido]

 

<?
function codificaSenha($senha, $usuario){

       $senhaNew = $senha.$usuario;

       /* Gera um Salt Aleatório */
       $salt = getSaltAleatorio();

       /* Cria a Hash primária */
       $hash = md5($senhaNew . $salt);

       /* Encripta essa Hash 1000 vezes */
       for ($i = 0; $i < 1000; $i++)
           $hash = md5($hash);

       return array($hash, $salt);

   }

   /**
    * getSaltAleatorio
    * 
    * Gera um Salt aleatório para ser utilizada na composição da senha
    *
    * @param           int         $tamanho        Tamanho do Salt
    * @return          string                      Salt formatado
    *  
    * 
    **/

   function getSaltAleatorio($tamanho = 22) {
       return substr(sha1(mt_rand()), 0, $tamanho);
   }

   /* Códifica senha */
   $senhaCodificada = codificaSenha("admin2323", "admin");

   var_dump($senhaCodificada);
   $userSalt = $senhaCodificada[1];

   /* Agora Valida */
   $userDigitado = "admin";
   $senhaDigitado = "admin2323";

   $senhaVerifica = $senhaDigitado.$userDigitado;
   $senhaDoUsuario = md5($senhaVerifica.$userSalt);

   for($i = 0; $i < 1000; $i++){
           $senhaDoUsuario = md5($senhaDoUsuario);
   }

   echo "Senha Digitada pelo usuário: <br />";
   var_dump($senhaDoUsuario);


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

De fato há algum problema no seu algoritmo, mas não consegui encontrar. Fiz uma pequena alteração na sua função para criptografar e retornar a mesma criptografia, caso o $salt seja informado. Nos meus teste o resultudado foi bem sucedido.

 

<?php

function getSenha($senha, $usuario, $salt = false){

$senha = $senha.$usuario;

/* Gera um Salt Aleatório */
if (!$salt) 
	$salt = getSaltAleatorio();

/* Cria a Hash primária */
$hash = md5($senha . $salt);

/* Encripta essa Hash 1000 vezes */
for ($i = 0; $i < 1000; $i++)
	$hash = md5($hash);

return array('senha'=>$hash, 'salt'=>$salt);
}

/**
* getSaltAleatorio
* 
* Gera um Salt aleatório para ser utilizada na composição da senha
*
* @param           int         $tamanho        Tamanho do Salt
* @return          string                      Salt formatado
*  
* @author Fernando Tholl
* @copyright ---
* @package ---
* 
**/
function getSaltAleatorio($tamanho = 22) {
return substr(sha1(mt_rand()), 0, $tamanho);
}

$userDigitado = "admin";
$senhaDigitado = "admin2323";

/* Códifica senha */
$senhaCodificada = getSenha($userDigitado, $senhaDigitado);

var_dump($senhaCodificada);
$userSalt = $senhaCodificada['salt'];

/* Agora Valida */

$senhaDoUsuario = getSenha($userDigitado, $senhaDigitado, $userSalt);
var_dump($senhaDoUsuario);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade o algoritimo está correto. Ao tentar validar novamente tava colocando o usuário no lugar da senha.

 

De fato há algum problema no seu algoritmo, mas não consegui encontrar. Fiz uma pequena alteração na sua função para criptografar e retornar a mesma criptografia, caso o $salt seja informado. Nos meus teste o resultudado foi bem sucedido.

 

<?php

function getSenha($senha, $usuario, $salt = false){

$senha = $senha.$usuario;

/* Gera um Salt Aleatório */
if (!$salt) 
	$salt = getSaltAleatorio();

/* Cria a Hash primária */
$hash = md5($senha . $salt);

/* Encripta essa Hash 1000 vezes */
for ($i = 0; $i < 1000; $i++)
	$hash = md5($hash);

return array('senha'=>$hash, 'salt'=>$salt);
}

/**
* getSaltAleatorio
* 
* Gera um Salt aleatório para ser utilizada na composição da senha
*
* @param           int         $tamanho        Tamanho do Salt
* @return          string                      Salt formatado
*  
* @author Fernando Tholl
* @copyright ---
* @package ---
* 
**/
function getSaltAleatorio($tamanho = 22) {
return substr(sha1(mt_rand()), 0, $tamanho);
}

$userDigitado = "admin";
$senhaDigitado = "admin2323";

/* Códifica senha */
$senhaCodificada = getSenha($userDigitado, $senhaDigitado);

var_dump($senhaCodificada);
$userSalt = $senhaCodificada['salt'];

/* Agora Valida */

$senhaDoUsuario = getSenha($userDigitado, $senhaDigitado, $userSalt);
var_dump($senhaDoUsuario);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade o algoritimo está correto. Ao tentar validar novamente tava colocando o usuário no lugar da senha.

 

Acontece. :)

 

*Rs*

 

Agora que você disse, também vi o problema.

 

Boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado amigo.

 

Esse foi difícil de achar :) haushausa, fiquei desde as 8 horas para descobrir que o script de teste que eu fiz é que estava errado. aushaushausha

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.