Olá, sou iniciante no Java, muito leiga ainda, justifico essa postage pois já li alguns posts mas não consegui sanar minhas dúvidas… Se puderem me ajuda fico muito grata!
Desenvolvendo um programinha de cadastros simples:
O usuário tem que ser cadastrado para poder logar no sistema;
Somente quem for o administrador poderá cadastrar os usuários;
Dúvidas:
Na tela de cadastro, para o campo senha estou usando o JPassworField;
A senha a qual é salva (criptografada) no B.D Access;
Na tela de login e senha eu comparo o que está no sendo digitado com o que foi salvo no B.D;
Aqui que está o problema, diz que a senha está errada pois ele esta comparando a criptografia…
Se a caso eu cadastrar na “unha”, digo via a tabela do Access, ele não criptografa, e eu consigo entrar no sistema, mas os usuário que foram cadastrados via sistema fica criptografado…
Olá Suemy…
Bom, você não posta como esta criptografando a senha, se for como eu entendi, tenta fazer assim.
Criptografa a senha que for digitada pelo usuario e só depois vc tenta verificar se são iguais…
Espero ter ajudado.
Antes de comparar a senha cadastrada no banco com a digitada pelo usuario, recupere essa informação do banco e descriptografa ela, ai você pode comparar.
:arrow: Você tem certeza de que o que você está salvando no banco via aplicação é a senha criptografada, e não um bando de caracteres inúteis?
:arrow: Toda ida tem uma volta, se você criptografou (utilizando alguma chave) você deve descriptografar este valor utilizando a chave de volta.
:arrow: Você está criptografando ou encriptando?
[quote]
Toda ida tem uma volta, se você criptografou (utilizando alguma chave) você deve descriptografar este valor utilizando a chave de volta. [/quote]
Isso não é de todo verdade, há formas de criptografia de via única: só vai, e não volta nunca mais hehehe
É por esse motivo, na realidade, que sempre faço o inverso: pego a senha, encripto, e só então comparo com a do banco.
leoramos tambem sugeriu isso mas não sei como o fazer…
em outro forum disseram que eu tinha que jogar na memória virtual para poder criptografar…não sei se tem um método para isso…
[quote]
Bom, você não posta como esta criptografando a senha[/quote]
Esta criptografando quando eu pego os dados do form em insiro no banco, eu estou usando getPasswoed()…
mas ele só aparece criptografado depois que vai para o B.D segue o código
perceba que antes de enviar eu ainda consigo compara a senha com a confirmação senha usando getText()…
securitynews,
não sei como mas vou tentar…
brlima,
Certeza absoluta não tenho, pois no b.D salva assim: [C@1dff3a2
e que se eu usar o getText(), em vez de getPasswor() eu sei que salva…“não criptografa”.
…não sei como fazer isso, vou tentar…
Desculpe minha ignorância, mas nem sabia da diferença dos termos…
creio que seja encriptando… poi ele faz isso “automatico” com o getPassword(),
leoramos,
Eu preciso criar uma outra tabela no B.D para receber os dados?
como faço?
Bruno Laturner,
…para isso preciso que a senha digitada pelo usuario passe a ser encriptada?
eu não sei como que faz… como faço?
Vlw pessoal pela atenção de todos, qualquer idéia, sugestão ou metodo podem postar !!! vou tentar fazer uns testes… qualquer resultado eu informo! blz!!!
[quote=Suemy][quote=Bruno Laturner]
O usual é comparar os hash…
[/quote]
…para isso preciso que a senha digitada pelo usuario passe a ser encriptada?
eu não sei como que faz… como faço?[/quote]
Sim. Primeiro você tem que descobrir qual o algoritmo de hash usado nas senha que já estão na base; pode ser MD5, SHA-1, etc. Depois usar ele para criptografar a senha passada pelo usuário, e comparar a String gerada com a senha que está na base usando o metódo equals.
Procure por MD5 aqui no fórum que deve ter vários tópicos explicando como gerar um hash de senhas.