[SHA256] Problem z hashowaniem tekstu.

0

Mam problem przy hashowaniu tekstu.
Przy SHA1 wszystko działa, SHA256 juz nie. Nie mam pojęcia dlaczego.
Kod poniżej.

public static String getHash(String message, String algorithm) {
	try {
		byte[] buffer = message.getBytes();
		MessageDigest md = MessageDigest.getInstance(algorithm);
		md.update(buffer);
		byte[] digest = md.digest();
		String hexValue = null;
		for(int i = 0 ; i < digest.length ; i++) {
			int b = digest[i] & 0xff;
			if (Integer.toHexString(b).length() == 1) hexValue = hexValue + "0";
			hexValue = hexValue + Integer.toHexString(b);
		}
		return hexValue;
	} catch(NoSuchAlgorithmException e) {
		e.printStackTrace();
	}
	return null;
}
0

Wprawdzie samego algorytmu nie znam, ale widzę, że robisz:

String hexValue = null;
(...)
hexValue = hexValue + Integer.toHexString(b);

"null + cokolwiek" to niedobry pomysł.

Przy okazji. Lepiej użyj klasy StringBuilder zamiast sklejać napisy.
http://java.sun.com/javase/6/docs/api/java/lang/StringBuilder.html

0

uzylem StringBuildera ale nie dziala tak jak powinien:

public static String getHash(String message, String algorithm) {
	try {
		byte[] buffer = message.getBytes();
		MessageDigest md = MessageDigest.getInstance(algorithm);
		md.update(buffer);
		byte[] digest = md.digest();
		StringBuilder stringBuilder = new StringBuilder();
		StringBuilder hexValue = null;
		for(int i = 0 ; i < digest.length ; i++) {
			int b = digest[i] & 0xff;
			if (Integer.toHexString(b).length() == 1) hexValue.append(0) ;
			

			hexValue = stringBuilder.append(Integer.toHexString(b));
				
		}
		return hexValue.toString();
	} catch(NoSuchAlgorithmException e) {
		e.printStackTrace();
	}
	return null;
}
0
StringBuilder hexValue = null;
(...)
hexValue.append(0) ;

Tak, jak mówiłem - nie znam algorytmu.
Widzę jednak, że na hexValue wywołujesz append(0) zanim cokolwiek na niego przypiszesz.

Pusty napis to "", a nie null.

1 użytkowników online, w tym zalogowanych: 0, gości: 1