Jump to content

Recommended Posts

Posted

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!"

Posted

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.

  • Vote 1

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

Posted (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 by duduml

"use windows, você merece!"

Posted

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?

Posted

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!"

Posted

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.

Posted

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!"

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.