[RESOLVIDO]Sha1

7 respostas
php7php
R

Bom dia, gostaria de saber se o algoritmo de criptografia SHA1 ainda está seguro pra ser usado? Ou se existe um melhor que possa substituir ele. Estou usando em php 7.0.10

7 Respostas

A

Você diz para senhas? Nao é mais, você deve dar preferência a algoritmos específicos para esse uso, como bcrypt. Procure por slow hash functions.

Numa procura rápida, achei esse artigo que parece levar em consideraçao os principais cuidados que você precisa tomar quando estiver gerenciando usuários e senhas:

L

Você pode usar a API do php específica para isso, ela tem suporte ao bcrypt…

R

certo, eu consegui fazer isso aqui

$senhaNaoSegura = $_POST['pswSenha'];
    $senha = password_hash($senhaNaoSegura, PASSWORD_BCRYPT, array('cost'=>25));

mas agora vem um probleminha, quando faço o login eu uso esse codigo

$senhaNaoSegura = $_POST['pswSenha'];
$senha = password_hash($senhaNaoSegura, PASSWORD_BCRYPT, array('cost'=>25));

// Chamando a função abrirConexão
$conexao = $conecta->abrirConexao();

// Realizando pesquisa no banco de dados
$resultado = $login->login($conexao,$email,$senha);

// Verificando se a pesquisa retornou com algum resultado
if($resultado > 0)
{
    echo "Logado com sucesso";
}
else
{
        header("Location: Login.php");
}

no sha1 funcionava, como eu prossigo agora?
no sha1 eu fazia a criptografia de novo e comparava, agora nesse é um mundo novo

L

Para comparar as senhas precisa usar a função password_verify, o link que passei tem referencia para ela… nesse caso, o login no banco precisa ser feito somente com o usuário, você traz a senha do banco e compara… a assinatura da função é

bool password_verify($senhaInformada, $senhaBD)

R
function login($conexao, $email, $senha)
    {
        $sql = mysqli_query($conexao, "SELECT email FROM usuarios WHERE email='$email'") or die(mysqli_error());
        $resultado = mysqli_num_rows($sql);

        if($resultado > 0)
        {
                $hash = mysqli_query($conexao, "SELECT senha FROM usuarios") or die(mysqli_error());
                if(password_verify($senha, $hash))
                {
                    echo "Logado com sucesso";
                }
                else
                {
                    echo "Não funcionou";
                }
        }
        else
        {

        }
    }

Não to conseguindo entender muito bem, consegui fazer isso mas ele da erro: password_verify() expects parameter 2 to be string, object given in C:\wamp64\www\Estoque\conexoes\LoginLogout.php on line 14

R

tive algum progresso eu acho, mas ele não esta reconhecendo a senha agora

function login($conexao, $email, $senha)
    {
        $query = mysqli_query($conexao, "SELECT * FROM usuarios WHERE email='$email'") or die(mysqli_error());
        if(mysqli_num_rows($query) > 0)
        {
            $row = mysqli_fetch_array($query);
            $hash = $row['senha'];
            if(password_verify($senha, $hash))
            {
                echo "deu certo";
            }
            else
            {
                echo "Não deu certo";
            }
        }
        else
        {

        }
    }
R

esse ultimo código que postei esta correto, eu tava usando bcrypt quando estava validando também, ele dava hashing duas vezes, por isso não reconhecia a senha

Obrigado pela ajuda, me quebraram uma arvore!

Criado 14 de abril de 2017
Ultima resposta 15 de abr. de 2017
Respostas 7
Participantes 3