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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline alex-cat  
#1 Оставлено : 5 сентября 2014 г. 17:53:04(UTC)
alex-cat

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

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

Добрый день. Нам написать обмен данными с ПФР.
Согласно их распоряжению "шифрованные данные передаются в виде структуры Contentlnfo со структурой EnvelopedData в качестве содержимого"

соответсвенно, мы шифруем данные следующим образом

Public Function encrypt_msg(msg As Byte(), recipientCert As System.Security.Cryptography.X509Certificates.X509Certificate2) As Byte()
'envelopedData - 1.2.840.113549.1.7.3 http://msdn.microsoft.co.../2cfes5ff(v=vs.110).aspx
Dim contentInfo As ContentInfo = New ContentInfo(New System.Security.Cryptography.Oid("1.2.840.113549.1.7.3"), msg)
Dim envelopedCms As EnvelopedCms = New EnvelopedCms(contentInfo)
Dim recipient As CmsRecipient = New CmsRecipient(recipientCert)
envelopedCms.Encrypt(recipient)
Return envelopedCms.Encode()
End Function

но при расшифровке данные не соответствуют исходным

Public Function decrypt_msg(msg As Byte()) As Byte()
Dim envelopedCms As EnvelopedCms = New EnvelopedCms()
envelopedCms.Decode(msg)
envelopedCms.Decrypt()
Return envelopedCms.ContentInfo.Content
End Function

Подскажите, пожалуйста - где грабли?
Либо как то иначе надо расшифровывать сообщение,
либо при шифрации передавать в ContentInfo некую структуру (EnvelopedData)?

Offline Максим Коллегин  
#2 Оставлено : 5 сентября 2014 г. 19:02:51(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,395
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 718 раз в 622 постах
посмотрите примеры на cpdn
Знания в базе знаний, поддержка в техподдержке
Offline faustoun  
#3 Оставлено : 19 октября 2016 г. 16:55:57(UTC)
faustoun

Статус: Участник

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

Сказал(а) «Спасибо»: 7 раз
Здравствуйте!

Подскажите, удалось ли решить проблему?

у меня шифрование таким методом(EnvelopedData) теряет часть данных.

Не могу разобраться в чем проблема...
Offline Андрей Писарев  
#4 Оставлено : 19 октября 2016 г. 18:09:14(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2217 раз в 1731 постах
Здравствуйте.

Без кода никто не скажет, где ошибка.
Что Вам мешает скачать и посмотреть примеры?
Техническую поддержку оказываем тут
Наша база знаний
Offline faustoun  
#5 Оставлено : 20 октября 2016 г. 9:19:02(UTC)
faustoun

Статус: Участник

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

Сказал(а) «Спасибо»: 7 раз
Смотрел я примеры.

там описывается простое шифрование.

Мне нужно с EnvelopedData.
Понимаю, что сложного ничего нет, все должно нормально шифроваться.
Но почему то часть данных теряется если добавляю структуру.
Дешифрация происходит успешно, но данные отображаются не все.
Крипто-АРМ тоже расшифровывает, но отображает не все данные.
Без структуры все шифруется полностью, но нам нужно именно со структурой.

Вот пример. Это я кстати и без примеров написал.

public byte[] EncryptData(byte[] b, X509Certificate2 Cert)
{
ContentInfo ContInf = new ContentInfo(new Oid("1.2.840.113549.1.7.3"), b);

EnvelopedCms envCMS = new EnvelopedCms(SubjectIdentifierType.IssuerAndSerialNumber, ContInf, new AlgorithmIdentifier(new Oid("1.2.643.2.2.21"), 512));

CmsRecipient rec = new CmsRecipient(SubjectIdentifierType.IssuerAndSerialNumber, Cert);

envCMS.Encrypt(rec);
byte[] encb = envCMS.Encode();
return encb;
}

Отредактировано пользователем 20 октября 2016 г. 9:20:12(UTC)  | Причина: Не указана

Offline Георгий Садофьев  
#6 Оставлено : 20 октября 2016 г. 13:04:35(UTC)
Георгий Садофьев

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

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

Поблагодарили: 31 раз в 30 постах
Добрый день!

Код:

new ContentInfo(new Oid("1.2.840.113549.1.7.3"), b);


EnvelopedCms не кодирует данные в соответствие с указанным типом. Он считает, что они уже правильно закодированы.
Поэтому, если в b лежит не Enveloped PKCS7 (1.2.840.113549.1.7.3), получится Ваш результат.
Техническую поддержку оказываем тут
Наша база знаний
Offline faustoun  
#7 Оставлено : 20 октября 2016 г. 16:46:44(UTC)
faustoun

Статус: Участник

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

Сказал(а) «Спасибо»: 7 раз
Спасибо!

Оказалось что данный атрибут совершенно ненужно было использовать.

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