Java 客户端中已生成文件哈希的时间戳请求

Java 客户端中已生成文件哈希的时间戳请求,java,hash,bouncycastle,trusted-timestamp,Java,Hash,Bouncycastle,Trusted Timestamp,我需要向一个大数据文件的tsa发出一个timpestamp请求,所以我正在使用javscript crypto js在客户端生成哈希 当我稍后在java中尝试发出请求时,问题就出现了。显然,TimeStampRequestGenerator.generate方法需要一个byte[]参数,在示例中,我可以使用该参数,它是从文件内容生成的MessageDigest对象,我无法找到仅使用已生成的哈希的方法 是否可以仅使用已生成文件的哈希值来发出请求 谢谢经过艰苦的测试,我找到了解决方案 javascr

我需要向一个大数据文件的tsa发出一个timpestamp请求,所以我正在使用javscript crypto js在客户端生成哈希

当我稍后在java中尝试发出请求时,问题就出现了。显然,TimeStampRequestGenerator.generate方法需要一个byte[]参数,在示例中,我可以使用该参数,它是从文件内容生成的MessageDigest对象,我无法找到仅使用已生成的哈希的方法

是否可以仅使用已生成文件的哈希值来发出请求


谢谢

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

javascript中生成的SHA-256散列在经过如下类型转换后可直接用于BouncyClass:

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