2012-08-12 103 views
0

我想使用gnu.crypto.hash.Whirlpool哈希加密字符串。Java示例使用gnu-crypto jar对漩涡进行加密pwd

加密应该加密密码,并且应该返回加密的密码。 encrypt(pwd);

此方法应具有实现用于使用GNU罐子和漩涡加密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) 
} 

}

+0

请不包括在帖子中,绝不会包含电子邮件地址,并显示您自己的一些努力 - 所以不是帮助台。 – 2012-08-12 10:10:49

+0

:)我试着用下面的方法,但我无法得到类似于生成的漩涡网站的512字节代码。 \t IMessageDigest md = HashFactory.getInstance(“WHIRLPOOL”); \t md.update(input,0,input.length); \t \t byte [] digest = md.digest(); \t的System.out.println( \t \t \t “输入:” +新的字符串(输入)+ \t \t \t “\ nPWD:” +新的字符串(摘要) \t \t \t); – Azhar 2012-08-12 10:26:18

+0

当我使用Whirlpool的bouncycastle库实现时,我获得了与PHP相同的输出。 – 2014-06-29 23:07:44

回答

3

Ya正确,但我期待与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) { } 
    } 
} 
0

您直接将字节值用作字符值,而不是将字节数组转换为十六进制或base64编码,以将其与whirlpool站点上的值进行比较。 Apache Commons Codec提供十六进制和base64功能。

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

感谢您的回复,但它没有返回与[link] http://hash.online-convert.com/whirlpool-generator生成的结果相同的结果 – Azhar 2012-08-12 20:52:08

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();