Ir para conteúdo

Arquivado

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

bnogueira02

Criptografia de senhas

Recommended Posts

Pessoal é o seguinte to criando um sistema, e preciso de bastante segurança para os usuários do msm.

Tentei usar OpenSSL para criptografar senha mas não obtive sucesso. Então usei um jogo de hash e mcrypter. Queria saber oque vcs acharam e se ficaria realmente seguro.

<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of fun
 *
 * @author Big Dell
 */
class funcoes {

    public function camuflaSenhas($senhas) {
        try {
            $camufla = md5(base64_encode($senhas));
            $texto = 'Segunda parde do desafio começa aqui!' . md5($senhas);
            $texto = $texto . 'Eu sei' . sha1($camufla) . 'oque';
            $camufla = md5($texto);
            $texto = 'Eu sei' . sha1($camufla) . 'oque' . md5($camufla) . 'você fez';
            $camufla = sha1($texto);
            $texto = sha1(base64_decode(sha1($camufla) . 'Eu sei' . md5($camufla) . 'oque' . sha1($camufla) . 'você fez' . md5($camufla) . 'verão passado' . sha1($camufla)));
            $camufla = sha1($texto);
            $texto = ' Parabens você conseguiu a senha: ' . md5($camufla);

            $key1 = $camufla;
            $key2 = $texto;
            $input = md5($senhas);
            $length = strlen($input);

            /* Open the cipher */
            $td = mcrypt_module_open('rijndael-256', '', 'cbc', '');

            /* Create the IV and determine the keysize length, use MCRYPT_RAND
             * on Windows instead */
            $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
            $ks = mcrypt_enc_get_key_size($td);

            /* Create key */
            $key1 = md5($key1);
            $key2 = sha1($key2);

            $key = substr($key1, 0, $ks / 2) . substr(strtoupper($key2), (round(strlen($key2) / 2)), $ks / 2);

            $key = substr($key . $key1 . $key2 . strtoupper($key1), 0, $ks);

            /* Intialize encryption */
            mcrypt_generic_init($td, $key, $iv);

            /* Encrypt data */
            $encrypted = mcrypt_generic($td, $input);

            /* Terminate encryption handler */
            mcrypt_generic_deinit($td);

            /* Initialize encryption module for decryption */
            mcrypt_generic_init($td, $key, $iv);

            /* Decrypt encrypted string */
            $decrypted = mdecrypt_generic($td, $encrypted);

            /* Terminate decryption handle and close module */
            mcrypt_generic_deinit($td);
            mcrypt_module_close($td);

            $camufla = sha1(md5($encrypted));

            return $camufla;
        } catch (Exception $exc) {
            echo 'Erro ao Camulhar Senha:' . $exc->getMessage();
            return false;
        }
    }

}

uma senha gerada com o sistema: cbd6bfac19286e95824c8f222b7e44a852052f68

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho mais simples e mais seguro usar um método de criptografia do PHP como o "whirlpool", que além dele existe mais dois. Ele é uma criptografia de mão única, em resumo não pode ser descriptografado só comparado com outras strings como senhas em bancos de dados. Abaixo segue um exemplo funcional de como usar esse método de criptografia:

 

<?php
$senha = "12345";
$encript = hash("whirlpool",$senha);
echo "<strong>Criptografada com o whirlpool:</strong> ".$encript;
?>
Resultado:
Criptografada com o whirlpool: cce08bba3f2e3c029cd257104b06d4b075772d5f514cf1b7789506f9a69d53c51464881d2c18445ab290553b302f67a24b1c69e3e737a46215deaf43517e4960

Compartilhar este post


Link para o post
Compartilhar em outros sites

A criptografia até que está boa, mas lembre-se.

 

A teoria e a prática nos tem mostrado e provado que, o elo mais fraco da segurança é o peopleware.

 

Em muitos casos, mais vale um ataque de EngSoc bem elaborado e aplicado do que cem ataques de Força Bruta.

 

Em outros casos, as GPUs costumam fazer muito bem o seu trabalho.

 

Não esqueça dos outros detalhes.

 

[ ]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trate senha, como senha, então use as funções password_hash password_verify

(Disponível a partir da versão do PHP 5 >= 5.5.0)

 

http://php.net/manual/pt_BR/function.password-hash.php

http://php.net/manual/pt_BR/function.password-verify.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou posso usar tudo junto e no final gerar uma password_hash password_verify

Qual a necessidade de juntar tudo novamente?

 

Não sei se leu o manual, é o que mais acontece por aqui, pois querem sempre a receita pronta!

 

Esta função password_hash faz tudo oque foi descrito nos posts acima, a diferença é que é ela é mais robusta, é projetada para mudar ao longo do tempo à medida que novos e mais fortes algoritmos de criptografia são adicionados ao PHP.

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.