Java и Php возвращает разные хеши
Итак, код PHP:
$result = hash("whirlpool","xxx".$password."zzz");
ДЖАВА:
import gnu.crypto.Registry;
import gnu.crypto.hash.HashFactory;
import gnu.crypto.hash.IMessageDigest;
public class WhirlpoolHash {
String result;
WhirlpoolHash(String pass) {
String to_encode = "xxx"+pass+"zzz";
IMessageDigest old_encoder = HashFactory.getInstance(Registry.WHIRLPOOL_HASH);
byte[] input = to_encode.getBytes();
old_encoder.update(input, 0, input.length);
byte[] digest = old_encoder.digest();
this.result = gnu.crypto.util.Util.toString(digest).toLowerCase();
}
public String Get() {
return this.result;
}
}
И результат варьируется. Мне нужен класс Java, чтобы вернуть то же значение, что и PHP. У меня есть пароли, хранящиеся в MySQL DB UTF-8 в кодировке, сгенерированные PHP, и мне нужно сравнить их с данными, отправленными приложением JavaFX.
Конечно, я могу послать незашифрованный пароль и сделать это с помощью php, но я не хочу.
1 ответ
Так что пример Java для шифрования pwd с помощью алгоритма whirlpool с использованием gnu-crypto jar был ответом.
Я не знаю почему но jonelo.jacksum.JacksumAPI
дает результат так же, как PHP.
Поздний ответ, но если это поможет кому-то другому.
У меня была почти такая же проблема, и я использовал Bouncy Castle на Java. После некоторых проб и ошибок я получил хеши с Whirlpool, соответствующие моему PHP-хешу, который выглядел похожим на ваш. Предполагая, что вы передаете пароль:
WhirlpoolDigest messageDigest = new WhirlpoolDigest();
final String convertedHash = "xxx" + password + "yyy";
messageDigest.reset();
final byte[] bytes = convertedHash.getBytes();
messageDigest.update(bytes, 0, bytes.length);
byte[] hash = new byte[messageDigest.getDigestSize()];
messageDigest.doFinal(hash, 0);
System.out.println(Hex.toHexString(hash));
Самой большой проблемой для меня были последние шаги - doFinal() и Hex.toHexString() ...
Моя зависимость от maven выглядела так:
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-ext-jdk15on</artifactId>
<version>1.64</version>
</dependency>