duduml Posted May 27, 2012 at 12:01 AM Report #458286 Posted May 27, 2012 at 12:01 AM Viva! Sei que o tema já foi debatido aqui, pois encontrei alguns tópicos, no entanto, não me consegui desenrascar com a informação. O problema é o seguinte: Eu desenvolvi um sitio em php, no qual guardo dados numa BD mysql sobre utilizadores,...entre esses dados, estão as password de acesso, das quais guardo o código hash gerado pelo md5 do php. Agora, no âmbito de uma cadeira da faculdade, pretendo desenvolver uma aplicação em java que faça uso dos mesmos dados de login. Mas para isso, tenho de gerar um hash atraves da pass inserida, para poder comparar os dados...e é ai que está o meu problema. Eu encontrei este exemplo http://www.sergiy.ca...h-php-or-mysql/, que me parece bem, no entanto, dá-me alguns erros que não consigo resolver, pois estou algo cru em java ainda -.- A função: public static String md5(String input) throws NoSuchAlgorithmException { String result = input; if(input != null) { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(input.getBytes());//erro 1 BigInteger hash = new BigInteger(1, md.digest());//erro 2 result = hash.toString(16); while(result.length() < 32) result = "0" + result; } return result; } Dá-me erro na linha: md.update(input.getBytes()); Erro: method update in class java.security.MessageDigest cannot be applied to given types; required: byte[],int,int found: byte[] reason: actual and formal argument lists differ in length E ainda nesta linha: BigInteger hash = new BigInteger(1, md.digest()); Erro: cannot find symbol symbol: class BigInteger location: class VisualMIDlet method digest in class java.security.MessageDigest cannot be applied to given types; required: byte[],int,int found: no arguments reason: actual and formal argument lists differ in length Alguém sabe como resolver os problemas?! Obrigado. "use windows, você merece!"
Rui Carlos Posted May 27, 2012 at 04:22 AM Report #458321 Posted May 27, 2012 at 04:22 AM Isso está um bocado estranho... O código devia estar correcto. Estás a importar as classes correctas? Rui Carlos Gonçalves
joelbrito Posted May 27, 2012 at 09:57 AM Report #458332 Posted May 27, 2012 at 09:57 AM import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; ... public static String string2md5(String senha) throws NoSuchAlgorithmException { String sen = ""; MessageDigest md = null; md = MessageDigest.getInstance("MD5"); BigInteger hash = new BigInteger(1, md.digest(senha.getBytes())); return sen; } Experimenta assim. Funcionou 5* no meu caso. 1 Report Engenharia de Sistemas Informáticos @ IPCA "Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs
duduml Posted May 27, 2012 at 11:01 AM Author Report #458337 Posted May 27, 2012 at 11:01 AM (edited) Isso está um bocado estranho... O código devia estar correcto. Estás a importar as classes correctas? Esqueci-me de referir isso --" Não consigo fazer o import de java.math.BigInteger; Simplesmente não existe no meu compilador, não conhece =/ import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; ... public static String string2md5(String senha) throws NoSuchAlgorithmException { String sen = ""; MessageDigest md = null; md = MessageDigest.getInstance("MD5"); BigInteger hash = new BigInteger(1, md.digest(senha.getBytes())); return sen; } Experimenta assim. Funcionou 5* no meu caso. Deste modo, dá-me erro apenas devido a não conhecer o BigInteger... Alguém me sabe dar indicações de como adquirir essa biblioteca e onde po-la?! Ou da solução que for preciso. Obrigado pelas respostas desde já! Cumprimentos, -- Edited May 27, 2012 at 11:12 AM by duduml "use windows, você merece!"
Knitter Posted May 27, 2012 at 01:20 PM Report #458362 Posted May 27, 2012 at 01:20 PM Não olhei com atenção para o código, tirando uma ou outra variação parece correcto, mas Não consigo fazer o import de java.math.BigInteger; Simplesmente não existe no meu compilador, não conhece =/ Isto não faz muito sentido, que JDK é que tens instalado?
duduml Posted May 27, 2012 at 01:38 PM Author Report #458363 Posted May 27, 2012 at 01:38 PM Não olhei com atenção para o código, tirando uma ou outra variação parece correcto, mas Isto não faz muito sentido, que JDK é que tens instalado? Tenho a versão 6. "use windows, você merece!"
Knitter Posted May 27, 2012 at 02:25 PM Report #458368 Posted May 27, 2012 at 02:25 PM Não era a versão mas sim qual o JDK, ou conjunto de ferramentas, se o oficial da Oracle, se o OpenJDK ou se outro qualquer porque essa classe faz parte da base da linguagem e está disponível tanto no Oracle JDK como no OpenJDK, não há razão para o compilaro não conhecer a não ser que tenhas um erro qualquer no ficheiro ou na tua instalação.
duduml Posted May 27, 2012 at 06:09 PM Author Report #458401 Posted May 27, 2012 at 06:09 PM ah -.- Tenho o da Oracle... Vou tentar reinstalar assim sendo 😕 "use windows, você merece!"
duduml Posted May 27, 2012 at 11:38 PM Author Report #458441 Posted May 27, 2012 at 11:38 PM Já resolvi a questão! O problema é que a aplicação é em java ME (coisa que não referi no inicio, peço desculpa) e não existe o java.math.BigInteger para java ME... Assim, tive de fazer download de uma class que alguém desenvolveu e usar a mesma... A fonte é esta: http://www.devmedia.com.br/criptografia-utilizando-md5-para-aplicativos-j2me/6290 Obrigado e todos pela paciência e ajuda! Cumprimentos, -- "use windows, você merece!"
Knitter Posted May 28, 2012 at 09:37 AM Report #458474 Posted May 28, 2012 at 09:37 AM Esse é um pormenor importante 🙂 , também nos podíamos ter lembrado disso. Ainda bem que a questão está resolvida. 1 Report
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now