2014-12-04 48 views
1

我需要对大数据文件的tsa进行timpestamp请求,所以我使用javscript crypto-js在客户端生成哈希。在客户端已经生成文件哈希的时间戳请求

问题出现在java后来尝试提出请求。显然,TimeStampRequestGenerator.generate方法需要一个byte []参数,在这个例子中,我可以认为这是一个从文件内容生成的MessageDigest对象,我找不到只使用已经生成的哈希的方法。

是否可以仅使用已生成的文件的散列进行请求?

谢谢

回答

1

经过艰苦的测试,我找到了解决方案。

在JavaScript中产生的SHA-256哈希值可以直接在bouncyclaste后某种类型的转换如下使用:

byte[] decodedHex = Hex.decodeHex(digest.toCharArray()); 

因此可以用它作为一个正常的

java.security.MessageDigest 

当它们是均转换为

byte[] 

完整代码在这里:

// Get hash code as hexadecimal string (generated by crypto-js) 
String digest = servletRequest.getParameter("digest"); 

// hexadecimal to string decoder 
byte[] decodedHex = Hex.decodeHex(digest.toCharArray()); 

// Timestamp request 
TimeStampRequestGenerator reqgen = new TimeStampRequestGenerator(); 
TimeStampRequest req = reqgen.generate(TSPAlgorithms.SHA256, decodedHex); 
byte request[] = req.getEncoded(); 
...