Я пытаюсь конвертировать Java API в CDI API шифрования ...
у меня в Java этот метод:
private static byte[] encodePassword(String password,String salt) throws UnsupportedEncodingException
{
String mergedPasswordAndSalt =mergePasswordAndSalt(password, salt);
SHA512Digest digester =new SHA512Digest();
byte[] hash = new byte[digester.getDigestSize()];
System.out.println("init hash= "+Base64.encode(hash));
try {
hash = mergedPasswordAndSalt.getBytes("UTF-8");
System.out.println("init merged= "+Base64.encode(hash));
digester.doFinal(hash,0);
System.out.println("after");
} catch (Exception ex) {
System.out.println("Exception");
}
for (int i = 1; i < ITERATIONS; ++i) {
digester.doFinal(Bytes.concat(hash, mergedPasswordAndSalt.getBytes("UTF-8")),0);
}
return hash;
}
и я пытаюсь использовать SHA512Digest так же, как это делают MessageDigest (в Java):
private static byte[] encodePassword(String password,String salt) throws UnsupportedEncodingException
{
String mergedPasswordAndSalt =mergePasswordAndSalt(password, salt);
SHA512Digest digester =new SHA512Digest();
byte[] hash = null;
try {
hash = mergedPasswordAndSalt.getBytes("UTF-8");
digester.doFinal(mergedPasswordAndSalt.getBytes("UTF-8"),0);
} catch (Exception ex) {
System.out.println("Exception");
}
for (int i = 1; i < ITERATIONS; ++i) {
digester.doFinal(Bytes.concat(hash, mergedPasswordAndSalt.getBytes("UTF-8")),0);
}
return hash;
}
Библиотека установлена в моем проекте, но doFinal не работает ... Мне не удалось преобразовать Java в кодовое имя, когда я в результате шифрования возвращаю исходный хэш, не модифицированный doFinal
init hash= AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAA==
init merged= MDAwMHtUZXdSLm1ldE9yTldrV1JTcWVJaHV4ejAvN2ZjeS5HUGIvS1l5c1BybkFZfQ==
Exception
and the method return Sha512{salt='TewR.metOrNWkWRSqeIhuxz0/7fcy.GPb/KYysPrnAY', hash='z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvYw=='}