Вопрос по java – Пример Java для шифрования pwd с помощью алгоритма whirlpool с использованием gnu-crypto jar

0

Я хочу зашифровать строку с помощью хэширования gnu.crypto.hash.Whirlpool.

Шифрование должно зашифровать пароль и вернуть зашифрованный pwd. шифруют (PWD);

This method should have implementation for encrypting pwd using gnu jars and whirlpool
hashing algorithm which should be equal to the pwd generated by the below site http://hash.online-convert.com/whirlpool-generator

Я попытался с кодом ниже, но я не могу получить код 512 байт, похожий на сгенерированный сайт Whirlpool:

import gnu.crypto.hash.HashFactory;
import gnu.crypto.hash.IMessageDigest;

  public class EncryptPwdWithAPI{
public static void main(String arg[])
{
         encrypt("somepwd");
    }
public static String encrypt(String password)
{
IMessageDigest md = HashFactory.getInstance("WHIRLPOOL");
md.update(input, 0, input.length); 
byte[] digest = md.digest(); 
System.out.println( "Input : "+new String(input)+ "\nPWD : "+new String(digest)
}

}

:) Я попробовал с ниже, но я не могу получить код 512 байт, похожий на сгенерированный сайт джакузи. IMessageDigest md = HashFactory.getInstance (& quot; WHIRLPOOL & quot;); md.update (input, 0, input.length); byte [] digest = md.digest (); System.out.println (& quot; ввод: & quot; + новая строка (ввод) + & quot; \ nPWD: & quot; + новая строка (сборник)); Azhar
Пожалуйста, не включайте "подпись". в сообщениях никогда не указывайте адрес электронной почты и не показывайте свои усилия - ТАК не служба поддержки. Andrew Thompson
Когда я использую реализацию Whirlpool библиотеки bouncycastle, я получаю тот же вывод, что и PHP. James K Polk

Ваш Ответ

3   ответа
3

но я ожидал, что у whirlpool есть код с 512 байтами, который равен коду, сгенерированному онлайн-генератором хэш-кода.I got the intended output with JacksumAPI.

Вот некоторый код:

import java.security.NoSuchAlgorithmException;

import jonelo.jacksum.JacksumAPI;
import jonelo.jacksum.algorithm.AbstractChecksum;

public class JacksumTest {
    public static void main(String arg[])
    {
        String password = "somepwd";
        AbstractChecksum checksum = null; 
        try { 
           checksum = JacksumAPI.getChecksumInstance("whirlpool"); 
           checksum.update(password.getBytes());
           System.out.println(checksum.getFormattedValue());
        } catch (NoSuchAlgorithmException nsae) { }
    }
}
0

@Eelke правильно, но вот как вы это делаете, кодированный пароль должен быть в переменной результата.

    IMessageDigest oldencoder = HashFactory.getInstance(Registry.WHIRLPOOL_HASH);

    byte[] input = password.getBytes();

    oldencoder.update(input, 0, input.length);

    byte[] digest = oldencoder.digest();

    result = gnu.crypto.util.Util.toString(digest).toLowerCase();
0

значений, вместо этого вам следует преобразовать байтовый массив в кодировку hex или base64, чтобы сравнить его со значениями на сайте гидромассажной ванны. Кодек Apache Commons предоставляет функции hex и base64.

import org.apache.commons.codec.binary.Base64;
...
  Base64.encodeBase64String(digest);
Спасибо за ответ, но он не возвращает результат, такой же как сгенерированный [ссылка]hash.online-convert.com/whirlpool-generator Azhar

Похожие вопросы