Статус: Активный участник
Группы: Участники
Зарегистрирован: 21.12.2016(UTC) Сообщений: 46 Откуда: Сургут Сказал(а) «Спасибо»: 10 раз Поблагодарили: 3 раз в 2 постах
|
Добрый день. В СМЭВ 3 клиенте есть функция, которая считает хэш для файла. Выглядит так: Код:
public DigestInputStream getDigestInputStream(InputStream inputStream) throws SMEVSignatureException {
try {
return new DigestInputStream(inputStream, DigitalSignatureFactory.getDigitalSignatureProcessor().getDigest());
} catch (SignatureProcessingException e) {
throw new SMEVSignatureException(e.getMessage(), e);
}
}
При использовании crypto-1.1 эта процедура работает, а при использовании crypto-2.0 возвращает ошибку: Код:Exception in thread "main" java.lang.NoSuchMethodError: ru.voskhod.crypto.DigitalSignatureProcessor.getDigest()Ljava/security/MessageDigest;
at ru.voskhod.smev.client.api.signature.impl.SignerImpl.getDigestInputStream(SignerImpl.java:221)
at ru.voskhod.smev.client.api.signature.impl.SignerImpl.getDigestInputStream(SignerImpl.java:212)
at ru.voskhod.smev.client.api.signature.impl.SignerImpl.getDigest(SignerImpl.java:188)
at ru.voskhod.smev.client.toolset.signer.Main.execute(Main.java:97)
at ru.voskhod.smev.client.toolset.signer.Main.main(Main.java:66)
Подскажите, как адаптировать процедуру под crypto-2.0 ? Отвечу сам, может кому-то пригодится: Код:
package digest;
import ru.CryptoPro.JCP.JCP;
import java.io.*;
import java.security.*;
import java.security.cert.CertificateException;
import ru.CryptoPro.CAdES.exception.*;
import java.nio.file.Files;
import java.nio.file.Paths;
public class run {
public static String toHexString(byte[] array) {
final char[] hex = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
'B', 'C', 'D', 'E', 'F'};
StringBuffer ss = new StringBuffer(array.length * 3);
for (int i = 0; i < array.length; i++) {
ss.append(' ');
ss.append(hex[(array[i] >>> 4) & 0xf]);
ss.append(hex[array[i] & 0xf]);
}
return ss.toString();
}
public static void main(String[] args) throws NoSuchAlgorithmException, IOException, KeyStoreException, CertificateException, UnrecoverableKeyException, CAdESException {
// создание объекта хеширования данных
byte[] data = Files.readAllBytes(Paths.get("C:\\_localsoft\\FSSP_FILES\\answers\\res_13532125435.xml"));
MessageDigest digest = MessageDigest.getInstance(JCP.GOST_DIGEST_OID);
digest.update(data);
// вычисление значения хеша
System.out.println(toHexString(digest.digest()));
FileOutputStream out = new FileOutputStream("digest.txt");
out.write(digest.digest());
out.close();
}
}
Отредактировано пользователем 31 марта 2017 г. 10:41:22(UTC)
| Причина: Не указана
|
1 пользователь поблагодарил U3962 за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close