使用gnu-crypto jar使用whirlpool算法加密pwd的Java示例

时间:2012-08-12 10:02:00

标签: java

我想使用gnu.crypto.hash.Whirlpool哈希加密字符串。

加密应加密密码,并应返回加密的密码。 加密(PWD);

  

此方法应该具有使用gnu jar和whirlpool
来加密pwd的实现       哈希算法    它应该等于以下网站生成的密码    http://hash.online-convert.com/whirlpool-generator

我尝试使用下面的代码但是我无法获得与生成的漩涡网站类似的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)
}

}

3 个答案:

答案 0 :(得分:3)

雅正确,但我期待whirlpool hascode具有512字节,等于在线哈希码生成器生成的代码。 我使用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) { }
    }
}

答案 1 :(得分:0)

您直接使用字节值作为字符值,而应将字节数组转换为十六进制或base64编码,以将其与漩涡网站上的值进行比较。 Apache Commons Codec提供了hex和base64函数。

import org.apache.commons.codec.binary.Base64;
...
  Base64.encodeBase64String(digest);

答案 2 :(得分: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();