Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Ильдар Якшибаев  
#1 Оставлено : 20 мая 2026 г. 12:44:13(UTC)
Ильдар Якшибаев

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.05.2026(UTC)
Сообщений: 5

Добрый день!
Пытаюсь добавить штамп ЭП в PDF файл по откреплённой подписи. Откреплённую подпись тоже нужно сохранять.
Сервер на C# .net core формирует PDF файл, затем с помощью iTextSharp добавляется штамп, вычисляется хэш по выбранному алгоритму и вместе с измененным PDF отправляется на клиент
Клиент на JS и Jquery подписывает хэш с помощью КриптоПро browser plugin, затем подпись отправляется обратно
На сервере пытаюсь вставить подпись в мой штамп, но после проверки через Acrobat Reader с установленным КриптоПро PDF, подпись недействительна
Собственно почему так происходит и как добавлять несколько подписей если хэш по сути будет меняться

Код формирования штампа и расчет хэша


Код записи подписи в штамп


Ошибка после вставки подписи в штамп
Offline Илья К.А.  
#2 Оставлено : 20 мая 2026 г. 13:07:17(UTC)
Илья К.А.

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 24.02.2026(UTC)
Сообщений: 19
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 5 раз в 5 постах
Автор: Ильдар Якшибаев Перейти к цитате
Клиент на JS и Jquery подписывает хэш с помощью КриптоПро browser plugin, затем подпись отправляется обратно


Как подписываете хэш на клиенте? Можете приложить код?

Подпишите также люблой PDF документ и пришлите его вместе с вычисленной ХЭШ суммой (которую отправили бы на подписание).
Проверю, правильно ли она вычисляется.
Offline Ильдар Якшибаев  
#3 Оставлено : 20 мая 2026 г. 13:19:25(UTC)
Ильдар Якшибаев

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.05.2026(UTC)
Сообщений: 5

Код подписания на JS


Хэш


3ec3bdd5-8422-440c-a8da-cd6439255aa3 original.pdf (29kb) загружен 4 раз(а).
3ec3bdd5-8422-440c-a8da-cd6439255aa3.pdf (46kb) загружен 2 раз(а).
Offline Андрей *  
#4 Оставлено : 20 мая 2026 г. 13:37:51(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,162
Мужчина
Российская Федерация

Сказал «Спасибо»: 618 раз
Поблагодарили: 2389 раз в 1880 постах
3ec3bdd5-8422-440c-a8da-cd6439255aa3 original.pdf = EA269B96695308B3AA337DEB1458C51E43C0091A1889621EF2D80558D3173115
3ec3bdd5-8422-440c-a8da-cd6439255aa3.pdf = 5B1ABFC739BAA7981B2FD5B3D9DC1F4555ECC68714059A5CE2486730EAC284EE
Техническую поддержку оказываем тут
Наша база знаний
Offline Илья К.А.  
#5 Оставлено : 20 мая 2026 г. 13:49:54(UTC)
Илья К.А.

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 24.02.2026(UTC)
Сообщений: 19
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 5 раз в 5 постах
Хэш от подписываемых данных в 3ec3bdd5-8422-440c-a8da-cd6439255aa3.pdf - DE0BFD3DB83B4BDDDCAD57494805810F8BE16DBCA335561E028AAF90DAEFD914
Так понимаю, вы получили хэш от всего документа PDF после создания пустой подписи.
Но для подписи PDF подписывается не весь документ, а два сегмента данных в /Root/AcroForm/Fields/V/ByteRange

В документации LibCore есть пример: https://dss.cryptopro.ru...F%D0%B8%D1%81%D1%8C.html
Можно взять его за основу и заместо вычисления подписи вычислять хэш.
Либо на основе вашего примера как-то получить ByteRange после вызова SignExternalContainer, и вычислить хэш от двух сегментов из него.
Offline Андрей *  
#6 Оставлено : 20 мая 2026 г. 14:15:16(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,162
Мужчина
Российская Федерация

Сказал «Спасибо»: 618 раз
Поблагодарили: 2389 раз в 1880 постах
.. * у меня другой файл

Отредактировано пользователем 20 мая 2026 г. 14:15:51(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Ильдар Якшибаев  
#7 Оставлено : 20 мая 2026 г. 14:40:28(UTC)
Ильдар Якшибаев

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.05.2026(UTC)
Сообщений: 5

Странно, я делал через ByteRange и у меня сначала не получилось, а сейчас всё сработало, но есть другая проблема, откреплённая подпись теперь недействительна и как я понимаю соподписание файла тоже не получится сделать т.к. я возьму в расчет хэша предыдущую подпись
Offline Илья К.А.  
#8 Оставлено : 20 мая 2026 г. 14:43:27(UTC)
Илья К.А.

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 24.02.2026(UTC)
Сообщений: 19
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 5 раз в 5 постах
Да, сделать так, чтобы проверялась и откреплённая подпись, и подпись в PDF нельзя, так как подписываются разные данные.
В случае с PDF подписью - это набор байт исходного PDF документа и элемента штампа (тут я упрощаю, но суть примерно такая). Между этими двумя отрезками байт помещаются байты подписи.
А в случае с откреплённой подписью - подписывается весь PDF документ.
Offline Ильдар Якшибаев  
#9 Оставлено : 20 мая 2026 г. 14:57:38(UTC)
Ильдар Якшибаев

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.05.2026(UTC)
Сообщений: 5

А как тогда происходит подпись через КриптоПро PDF, я подписал PDF откреплённой подписью, затем добавил подпись через КриптоПро PDF и проверил откреплённую подпись, и подпись прошла проверку
Offline Илья К.А.  
#10 Оставлено : 20 мая 2026 г. 15:29:24(UTC)
Илья К.А.

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 24.02.2026(UTC)
Сообщений: 19
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 5 раз в 5 постах
Не уверен, как такое могло получиться. Подпись точно откреплённая создалась?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.