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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline stim24  
#11 Оставлено : 20 ноября 2019 г. 17:51:35(UTC)
stim24

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

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

Всеже уточнить.
Делаю подпись для в входа в честныйзнак
Если создаю файл со сданными
Цитата:
b5374438-16e6-4f74-a318-87bac08b9dcc

и подписываю через csptest
Цитата:
csptest -sfsign -sign -in d:\temp\doc.txt -out d:\temp\doc_out.txt -my "XXXX" -detached -base64 -add

и когда делаю через ваши примеры
Код:

            String signerName = SertName.Text; 

            // Исходное сообщение.
            String msg = "b5374438-16e6-4f74-a318-87bac08b9dcc";

            // Переводим исходное сообщение в массив байтов.
            Encoding unicode = Encoding.Unicode;
            byte[] msgBytes = unicode.GetBytes(msg);

            // Получаем сертификат ключа подписи;
            // он будет использоваться для получения 
            // секретного ключа подписи.
            X509Certificate2 signerCert = GetSignerCert(signerName);

            byte[] encodedSignature = SignMsg(msgBytes, signerCert);
            File.WriteAllBytes(filename_sign, encodedSignature);

            // При проверка detached подписи передаем и само сообщение
            if (VerifyMsg(msgBytes, encodedSignature))
            {
//                Console.WriteLine("{0}Сообщение проверено.",
//                  Environment.NewLine);
            }
            else
            {
//            Console.WriteLine("{0}Ошибка при проверке сообщения.",
//              Environment.NewLine);
            }
            
            EncodeFromFile(filename_sign, filename_sign64);// скопировано из Base64Encode.cs


в функции static byte[] SignMsg(Byte[] msg, X509Certificate2 signerCert) я указал
Код:
cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;

Должны быть подписаны одинаково?
Даже если к конце обоих подписей есть различие? суммарно байт одинаково. только последние данные 88 байтов разные
Просто портал за честныйзнак пишет что подпись через криптопро.net не подходит.
Offline Андрей Писарев  
#12 Оставлено : 20 ноября 2019 г. 20:04:43(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
А утилита проверяет подпись для файла от кода из C#?

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#13 Оставлено : 20 ноября 2019 г. 20:24:03(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Если заменить на Encoding.UTF8 - то будет проверять)

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#14 Оставлено : 20 ноября 2019 г. 20:27:48(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Код:


            byte[] msgBytes = File.ReadAllBytes("d:\\файл.txt");   

            File.WriteAllBytes("d:\\файл.txt.p7s", SignMsg(msgBytes, GetSignerCert(), true)); 

Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#15 Оставлено : 21 ноября 2019 г. 8:17:49(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Цитата:
Должны быть подписаны одинаково?
Даже если к конце обоих подписей есть различие? суммарно байт одинаково. только последние данные 88 байтов разные
Просто портал за честный знак пишет что подпись через криптопро.net не подходит.
Отличие последних 88 байтов (88 в base64 или 64 двоичных байт) нормально - каждый раз при вычислении подписи гост выбирается случайное число и из-за этого значение Raw подписи получается разное (одна половина из 64 двоичных байт - как раз это случайное число, другая половина данные полученные при подписании). Если все кроме последних 88 байт совпадает, то формат верный.

Проверьте что делаете urlencode при отправке на сервис - без него символы + в записи base64 будут искажены.

Отредактировано пользователем 21 ноября 2019 г. 8:18:42(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.