Статус: Новичок
Группы: Участники
Зарегистрирован: 03.07.2017(UTC) Сообщений: 3
Сказал(а) «Спасибо»: 1 раз
|
Пытаюсь расшифровать и проверить подпись файла p7s.p7m. Файл подписан моим сертификатом. Файл зашифрован с помощью АРМ КриптоАРМ версии 4. АРМ КриптоАРМ версии 4 его без проблем проверяет и расшифровывает. Использую код из Samples.CMS.Verify // Пример проверки подписи в подписанном PKCS#7/CMS сообщении. Код:
byte[] encodedSignedCms = File.ReadAllBytes(filename);
SignedCms signedCms = new SignedCms();
signedCms.Decode(encodedSignedCms);// Получаю исключение "Встречено неверное значение тега ASN"
Побывал считывать и с кодировкой BASE64 Цитата:Код:byte[] encodedSignedCms = Convert.FromBase64String(File.ReadAllText(filename));// Получаю "Входные данные не являются действительной строкой Base-64"
и удалять первую и последнюю служебную строку (BEGIN/END PKCS7 ENCRYPTED ) из файла p7s.p7m. Результат тот же.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,342 Сказал «Спасибо»: 550 раз Поблагодарили: 2213 раз в 1727 постах
|
Здравствуйте.
Файл необходимо сначала расшифровать, а потом проверять подпись\извлекать подписанные данные.
В приведенном коде нет расшифрования. Класс SignedCms - отвечает за подписание\проверку, а не за шифрование\расшифровку.
|
|
1 пользователь поблагодарил Андрей * за этот пост.
|
WilSom оставлено 04.07.2017(UTC)
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 03.07.2017(UTC) Сообщений: 3
Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей * Здравствуйте.
Файл необходимо сначала расшифровать, а потом проверять подпись\извлекать подписанные данные.
В приведенном коде нет расшифрования. Класс SignedCms - отвечает за подписание\проверку, а не за шифрование\расшифровку.
Спасибо за ответ! Попробовал расшифрование из пример Samples.Encrypt.gEncryptFileAgree. В качестве названия ключа расшифровки использую название своего ключа. Получаю исключение "Чтение после конца потока невозможно." Наверника виной тому, что в тестовом примере в конце данных писали сихропосылку. А у меня её там нету. Файл зашифрован с помощью КриптоАРМ версии 4. Как расшифрование этот файл? Код: // Открываем ключ получателя.
CspParameters par = new CspParameters(75, null, DestContainer);
Gost3410CryptoServiceProvider destCont = new Gost3410CryptoServiceProvider(par);
// Открываем зашифрованный файл.
using (FileStream ifs = new FileStream(EncryptedFileName, FileMode.Open, FileAccess.Read))
{
// Читаем зашифрованный симметричный ключ.
BinaryReader br = new BinaryReader(ifs);
byte[] cek;
int cekLength = br.ReadInt32();
cek = br.ReadBytes(cekLength);
// Читаем синхропосылку
byte[] iv;
int ivLength = br.ReadInt32(); //!!! Исключение "Чтение после конца потока невозможно."
iv = br.ReadBytes(ivLength);
Отредактировано пользователем 4 июля 2017 г. 14:53:32(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,342 Сказал «Спасибо»: 550 раз Поблагодарили: 2213 раз в 1727 постах
|
Здравствуйте. Цитата:Файл зашифрован с помощью КриптоАРМ Расшифровывать используя соответствующий класс EnvelopedCms. Примеры есть в КриптоПРО.NET SDK \Program Files (x86)\Crypto Pro\.NET SDK\Examples\simple.zip\CMS\cs\EnvelopedMultipleRecipients.cs |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close