Приведенная ссылка не отвечает на вопрос.В MessageDiggest написано:
toString()
Returns a string representation of this message digest object.
Мне неясно, почему это всегда будет всего 8 или 9 символов.
У меня есть следующий метод создания хешированного пароля.Он возвращает только 8 или 9 символов, и мне интересно, если есть проблема с ним:
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.security.NoSuchAlgorithmException;
import java.io.UnsupportedEncodingException;
public class Password {
public static void main(String[] args) {
String[] saltPassword = createPassword("password");
System.out.println("Salt = " + saltPassword[0]);
System.out.println("Password = " + saltPassword[1]);
}
private static String[] createPassword(String password) {
String [] saltPassword = new String[2];
try{
SecureRandom random = new SecureRandom();
byte[] salt = new byte[32];
random.nextBytes(salt);
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(salt);
md.update(password.getBytes("UTF8"));
byte[] digest = md.digest();
saltPassword[0] = salt.toString();
saltPassword[1] = digest.toString();
System.out.println(digest);
}catch(NoSuchAlgorithmException e1){
System.out.println("FATAL ERROR: " + e1);
System.exit(0);
}catch(UnsupportedEncodingException e2){
System.out.println("FATAL ERROR: " + e2);
System.exit(0);
}
return(saltPassword);
}
}