Não, este tópico é uma dica para quem quiser fazer um cadastro de usuário com a senha criptografada.
A
alissonvla
ha ta…
F
Furlani
Cara eu ia pesquisar sobre isso mas estava deixando para depois…
Ai eu vi agora e já vou aproveitar para utilizar -…
muito obrigado!
G
getAdicted
Valeu o/…
[]'s
A
AbelBueno
Parabéns pela iniciativa Marcio_Nogueira.
É o tipo de código que em algum momento iremos precisar.
Gostaria apenas de fazer algumas considerações:
O uso da classe BASE64Encoder não é recomendado por ser do pacote sun, que pode mudar de uma versão para outra. (Imagino que seja a classe sun.misc.BASE64Encoder)
Para realizar este passo é melhor utilizar uma lib de terceiros ou desenvolver uma própria.
É recomendado utilizar a versão do getBytes() que recebe um Charset como parâmetro.
Por último, é recomendado adicionar um salt (um prefixo, numa tradução livre) na hora de gerar o hash da senha.
Esse salt impede que senhas iguais gerem o mesmo hash, tornando muito mais dificil um ataque de força bruta.
Esse salt é um valor qualquer que varia por login (pode ser até o próprio login).
Mesmo que dois usuários escolham a mesma senha, concatenando esse salt, os dois hashs gerados serão completamente diferentes.
R
rsmoraes
Sei que isso vai de programador para programador e tudo mais… Caso for utilizar JDBC no projeto, seria mais simples utilizar o MD5 ao inserir dados no banco, não acha ?
vc pode garantir que todo banco de dados tem essa funcao md5?
se sim, sua idea é muito boa.
se não, acho que do nosso amigo do post melhor.
t+
R
rsmoraes
Digo o banco de dados MySQL, que seria melhorzinho para “estudar”… algo do tipo…
R
rsmoraes
Mas a ideia do amigo do post é bem interessante e funcional. Usando algum banco de dados que não tenha esta função… Seria ótimo utilizar sim o que o amigo do post disse… só dei mais uma opção… caso o BD tenha esta função.
Para quê complicar a vida das pessoas com um código longo e sujeito a falhas?
Um bom código deve ser simples, fácil de entender e dar manutenção.
A
alexandre.marques
É possivel implementar esse código em um Filtro para Servlet? você tem algum modelo desse código implementado em um filtro? eu estou aprendendo a usar Filtro e session e seria legal criptografar a senha.
Parabéns! :thumbup:
R
ruben_m
rsmoraes:
Sei que isso vai de programador para programador e tudo mais… Caso for utilizar JDBC no projeto, seria mais simples utilizar o MD5 ao inserir dados no banco, não acha ?
Concordo que esta ideia é a mais Pratica , aqui esta em cima é muito dependente da linguagem Java em Sim, imaginem-se se for um Banco que também precisa ser acessado via Web ou outra linguagem ? Ja não se poderia Fazer Autenticações e cadastros!
Acho que é mais practico fazer criptografias ao nivel de Banco de Dados , é so investigar um pouco mais o seu SGBD
A
AbelBueno
Na verdade, esse código acima não depende em nada do Java. O MD5 é um algoritmo que pode ser implementado em virtualmente qualquer linguagem.
O resultado da função mysql não será diferente da função no java, exceto talvez pelo formato base64 (não sei como o mysql retorna a função md5 dele).
É realmente mas simples, mas tem algumas limitações.
Toda vez, por exemplo, que tentar validar a senha terá que ir ao banco de dados chamar a função do mysql.
Se quisesse pedir para o usuário digitar novamente a senha para uma operação sensível, poderia ter o hash armazenado na própria sessão do usuário.
Com essa abordagem, teria que sempre acessar o bd.
Você acaba dando a responsabilidade de validar senha para o bd e não para aplicação.
R
ruben_m
Mas eu usei isso no intuito de que a BD é unica e os Aplicativos podem ser Muitos …
J
jaissonduarte
por isso que eu amo o GUJ o pessoal sempre esta pronto a ajudar
G
gnucleber
Muito bom amigo, parabéns!
Eu estava procurando exatamente isso, pois estou com um livro que mostra como trabalhar com MD5 no Spring Security mas não fala como gravar em MD5
F
fenloki
Nao sei se to ressucitando o topico, mas muito obrigado pelo codigo cara! vo usa no projeto da facul
M
MusashiBR
No caso de validar a senha para login, usa o mesmo metodo para verificar se está correto?