Estou fazendo projeto final e tem duas tarefas que eu gostaria de fazer e não estou conseguindo:
1 - Tem uma tela de login. No cadastro, a senha é criptografada, já no banco mysql, com o MD5. Tem como, na hora do login, eu comparar a senha criptografando o que o usuario digita pelo mysql. como? ou tenho q criptografar pelo jsp mesmo? Gostaria de saber como resolvo isso.
2 - Faço um upload de um arquivo qualquer para uma pasta do site. Quero gravar os dados do arquivo numa tabela do mysql( nome, tamanho,etc). Como?
Quando o usuário digita login e senha você tem que “comparar” o que o usuário digitou com o que está no banco. Criptografe a senha que o usuário digitou e compare com a que está no banco.
Não entendi qual a sua duvida.
E
erickcellani
para sua primeira pergunta… eu tbm desenvolvi uma tela de login com a criptografia igual a sua…
o que eu estou fazendo é o seguinte…
o usuário cadastra a senha dele… assim que ele cadastra… já é enviado ao banco criptografado (lógico) e qnd ele vai se logar… ele digita a senha (q é criptografada) e comparada com a do banco!!!
no caso do usuário esquecer a senha eu envio uma senha para ele por e-mail… e se ele quiser trocar… ele tem que cadastrar a senha mais uma vez! (nesse caso utilizo um update na base)
para sua segunda duvida… (eu naum entendi!) ahahaha
J
jlsan81
1)OK, mas como eu criptografo MD5 no jsp?
a dúvida é essa mesmo fsquadro. o que vc não entendeu?
Muito Obrigado pelas respostas… :lol:
E
erickcellani
1-> eu estou usando struts… ai qnd ele manda para a action eu ja faço a criptografia!
2-> cara… nunca precisei fazer isso… naum sei ou naum me lembro como pegar as propriedades do arquivo… (mas naum deve ser dificil… se eu encontrar uma forma de fazer isso eu mando para vc ;))
J
jlsan81
erickcellani:
1-> eu estou usando struts… ai qnd ele manda para a action eu ja faço a criptografia!
2-> cara… nunca precisei fazer isso… naum sei ou naum me lembro como pegar as propriedades do arquivo… (mas naum deve ser dificil… se eu encontrar uma forma de fazer isso eu mando para vc ;))
Valeu cara, vou continuar procurando. Quando eu achar a resposta, posto aqui o código completo.
Abraço
R
rflprp
Exemplo de criptografia com md5:
publicstaticvoidmain(String[]args)throwsException{Stringpassword="12345";byte[]defaultBytes=password.getBytes();try{MessageDigestalgorithm=MessageDigest.getInstance("MD5");algorithm.reset();algorithm.update(defaultBytes);bytemessageDigest[]=algorithm.digest();StringBufferhexString=newStringBuffer();for(inti=0;i<messageDigest.length;i++){hexString.append(Integer.toHexString(0xFF&messageDigest[i]));}System.out.println("password "+password+" md5 version is "+hexString.toString());password=hexString+"";}catch(NoSuchAlgorithmExceptionnsae){thrownsae;}}
[]´s
R
rflprp
Aproveita e dá uma lida em:
[]´s
J
jlsan81
Eu criptografei a senha no cadastro na hora da inserção no BD(insert into … md5(senha)…)
Agora, na hora do login, eu tenho que critografar no jsp antes de comparar ou tem como eu criptografar pelo BD de novo e fazer a comparação??? :roll:
F
fsquadro
jlsan81,
Quando o usuário digitar a senha do login, criptografe ela e compare com a senha que está no banco (que já está criptografada).
Espero ter ajudado.
J
jlsan81
Rafaelprp:
Exemplo de criptografia com md5:
publicstaticvoidmain(String[]args)throwsException{Stringpassword="12345";byte[]defaultBytes=password.getBytes();try{MessageDigestalgorithm=MessageDigest.getInstance("MD5");algorithm.reset();algorithm.update(defaultBytes);bytemessageDigest[]=algorithm.digest();StringBufferhexString=newStringBuffer();for(inti=0;i<messageDigest.length;i++){hexString.append(Integer.toHexString(0xFF&messageDigest[i]));}System.out.println("password "+password+" md5 version is "+hexString.toString());password=hexString+"";}catch(NoSuchAlgorithmExceptionnsae){thrownsae;}}
[]´s
Esse codigo eu tenho que colocar dentro de um arquivo .java? ou direto no jsp?
Desculpem minha ignorancia… :?
F
fsquadro
jlsan81,
Dentro de um arquivo Java.
V
victorcosta
Pq q essas APIs java são tão chatas?
No php vc dá um md5(senha) e pronto
J
jlsan81
victorcosta:
Pq q essas APIs java são tão chatas?
No php vc dá um md5(senha) e pronto :P
concordo plenamente.
J
jlsan81
PRONTO!
Arrumei um jeito mais prático(nao garanto a qualidade) de criptografar a senha digitada pelo usuario: pelo próprio BD. Veja abaixo:
Depois eu pego os dados do banco:
E depois comparo:
Só não sei porque sempre dá Usuario ou senha inváldos. Deve ser algo de errado que fiz na comparação. O importante é que os dados estão sendo criptografados.
Obrigado a todos!
F
fsquadro
jlsan81,
Não tem nada de complicado. Veja:
EncriptaSenha.java
publicclassEncriptaSenha{/** Creates a new instance of EncriptaSenha */publicEncriptaSenha(){}publicstaticStringencripta(Stringsenha){try{MessageDigestdigest=MessageDigest.getInstance("MD5");digest.update(senha.getBytes());BASE64Encoderencoder=newBASE64Encoder();returnencoder.encode(digest.digest());}catch(NoSuchAlgorithmExceptionns){ns.printStackTrace();returnsenha;}}}
Autenticacao.java
Stringsenha="";Stringsenha_banco="";Stringlogin_form=request.getParameter("login");//PegaoLoginvindodoformularioStringsenha_form=request.getParameter("senha");//PegaasenhavindadoformularioClass.forName("com.mysql.jdbc.Driver");Connectioncon=DriverManager.getConnection("jdbc:mysql://end do banco","login banco","senha banco");//BancoconectadoateaquiPreparedStatementstmt=con.prepareStatement("select login, senha from usuario where ?, ?");//iniciandoacriptografiadoquefoidigitadostmt.setString(1,login_form);stmt.setString(1,EncriptaSenha.encripta(senha_form));ResultSetrs=stmt.executeQuery();//fazvalidação
Fica bem mais fácil e prático.
Outra coisa, não aconselho vc a fazer isso no JSP, e sim criar as classes e cama-las nos JSP’s.
J
jlsan81
fsquadro
Muito obrigado!
O problema é que apareceu isso pra eu fazer, sendo que reconheço que não tenho a prática necessária para achar tão simples assim.
Eu fico atrapalhado na hora de chamar arquivos java dentro do jsp, por isso procurei uma forma de fazer direto.
Mas eu vou tudo isso que disse em consideração sim. Provavelmente mudarei meu codigo. Por enquanto quero q ele funcione para eu me preocupar com a criptografia dos arquivos e a gravação dos dados de arquivos upados no BD.
Sabe algo disso?
F
fsquadro
jlsan81 ,
O que você quer fazer com os arquivos, salva-los em banco? Salvar apenas o caminho, e o arquivo em uma pasta?
Deseja que quando salve o arquivo, salve outras informações sobre o arquivo, como uma descrição por exemplo.
O que em si, você deseja fazer!
J
jlsan81
Terei uma pagina de UPLOAD, que salvará qq tipo de arquivo numa pasta.
Nesse mesmo codigo do upload, quero sejam extraídos dados do arquivo
(nome, tamanho, data do up, quem upou,etc) e gravados na tabela
arquivo, no BD.
Ah! E o arquivo tem que ser criptografado antes de salvado na pasta…