0

gnu.crypto.hash.Whirlpoolハッシュを使用して文字列を暗号化したい。

暗号化はパスワードを暗号化し、暗号化されたパスワードを返す必要があります。暗号化(pwd);

このメソッドには、gnu jarとワールプール
ハッシュアルゴリズムを使用してpwdを暗号化するための実装が必要です。これは、以下のサイト http://hash.online-convert.com/whirlpool-generatorによって生成されるpwdと同じである必要があります。

以下のコードで試しましたが、生成されたワールプールサイトに似た512バイトのコードを取得できません。

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)
}

}

4

3 に答える 3

3

正解ですが、オンラインハッシュコードジェネレーターによって生成されたコードと等しい512バイトのワールプールhascodeを期待していました。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) { }
    }
}
于 2012-08-13T16:58:35.003 に答える
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();
于 2012-08-13T12:38:10.180 に答える
0

バイト値を文字値として直接使用しているのではなく、バイト配列をhexまたはbase64エンコーディングに変換して、ワールプールサイトの値と比較する必要があります。Apache Commons Codecは、hexおよびbase64関数を提供します。

import org.apache.commons.codec.binary.Base64;
...
  Base64.encodeBase64String(digest);
于 2012-08-12T11:18:16.600 に答える