2014-12-04 50 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(); 
...