Может ли кто-нибудь сказать мне, почему следующий код не всегда возвращает тот же хеш? AFAIK единственным способом хэша может отличаться из-за случайную соль, но в соответствии с документацией, я отключение соли, установив размер соли до 0.sha-256 без соли не всегда возвращает тот же самый хэш
public static void main(String[] args) {
char[] password = "test_pass".toCharArray();
String str = encodePassword(password);
System.out.printf(
"Byte digest '%s'\n",
String.valueOf(Hex.encodeHex(Base64.decodeBase64(str)))
);
}
static StandardByteDigester digester = new StandardByteDigester();
{
digester.setAlgorithm("SHA-256");
digester.setIterations(100000);
digester.setSaltSizeBytes(0);
digester.initialize();
}
public static String encodePassword(char[] rawPass) {
return new String(Base64.encodeBase64(digester.digest(toBytes(rawPass))));
}
public static byte[] toBytes(char[] ch) {
Charset charset = Charset.defaultCharset();
ByteBuffer buff = charset.encode(CharBuffer.wrap(ch));
byte[] tmp = new byte[buff.limit()];
buff.get(tmp);
return tmp;
}
какая версия jasypt вы используете? – Asoub