Запрос метки времени с хэшем файла, уже сгенерированным в клиенте

Мне нужно сделать запрос Timpestamp к TSA большого файла данных, и поэтому я генерирую хэш в клиенте, используя javscript crypto-js.

Проблема возникает, когда позже в Java я пытаюсь сделать запрос. Очевидно, что методу TimeStampRequestGenerator.generate требуется параметр byte[], который в примерах я могу определить, который является объектом MessageDigest, сгенерированным из содержимого файла, и я не могу найти способ использовать только сгенерированный хеш.

Можно ли сделать запрос, используя только хэш файла, уже сгенерированного?

Спасибо

1 ответ

Решение

После тяжелого тестирования я нашел решение.

Хэш SHA-256, сгенерированный в javascript, может использоваться непосредственно в 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();
...
Другие вопросы по тегам