Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Расшифровать сообщение зашифрованное в 28147-89 с помощью Sharpei
Статус: Новичок
Группы: Участники
Зарегистрирован: 21.10.2020(UTC) Сообщений: 1 Откуда: Москва
|
Здравствуйте!
Мы получаем JSON-сообщение (зашифрованное с помощью CAdES Browser Plug-in) в виде:
{ "encryptedData":"22BB468633304C892E..................", "exportedKey":"31 2E 32 2E 36 34 33 2E 37 2E 31 2E 32 2E 35 2E 31 2E 31 00:0A 20 00 00 49 2E 00 00 4D 41 47 31 00 02 00 00 30 13 06 07 2A 85 03 02 02 24 00 06 08 2A 85 03 07 01 01 02 02 72 03 75 17 C6 CB 5B 4F FA 75 F1 52 02 02 B3 C4 51 56 34 1C 65 7A 41 BE 38 B7 59 8F F8 A9 0D DE 94 99 C4 07 64 F6 71 11 29 29 78 EA EC 6C 03 22 BD 02 59 E8 E7 AB B7 46 1F 98 C8 AC 07 1F 0A F8:01 20 00 00 1E 66 00 00 FD 51 4A 37 1E 66 00 00 BF 01 41 86 C7 41 81 89 5C 4B 30 FE 66 67 B8 2D 22 28 DA 46 4B 10 DE 8E C6 29 63 EE 1D D3 D0 2C 66 03 17 D4 56 F5 C8 85 0F D2 B3 14 30 09 06 07 2A 85 03 02 02 1F 01", "diversData":"E0 20 46 46 C6 4A 85 0D 26 C8 8B 2F 7E 04 53 C6 31 93 46 D7 E6 67 FB 79 15 13 19 00 14 0D 91 31 AD FC EB 7F C8 87 23 CE", "openSessionKey":"8B 0C DA 8B DE C2 FF 21" }
Из примеров в .NET SDK не очень понятно, как расшифровать данное сообщение с помощью библиотеки CryptoPro.Sharpei. Приведите пример, пожалуйста.
Спасибо.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 30.06.2016(UTC) Сообщений: 3,452 Сказал «Спасибо»: 53 раз Поблагодарили: 792 раз в 732 постах
|
Автор: _Nikolai_ Здравствуйте!
Мы получаем JSON-сообщение (зашифрованное с помощью CAdES Browser Plug-in) в виде:
{ "encryptedData":"22BB468633304C892E..................", "exportedKey":"31 2E 32 2E 36 34 33 2E 37 2E 31 2E 32 2E 35 2E 31 2E 31 00:0A 20 00 00 49 2E 00 00 4D 41 47 31 00 02 00 00 30 13 06 07 2A 85 03 02 02 24 00 06 08 2A 85 03 07 01 01 02 02 72 03 75 17 C6 CB 5B 4F FA 75 F1 52 02 02 B3 C4 51 56 34 1C 65 7A 41 BE 38 B7 59 8F F8 A9 0D DE 94 99 C4 07 64 F6 71 11 29 29 78 EA EC 6C 03 22 BD 02 59 E8 E7 AB B7 46 1F 98 C8 AC 07 1F 0A F8:01 20 00 00 1E 66 00 00 FD 51 4A 37 1E 66 00 00 BF 01 41 86 C7 41 81 89 5C 4B 30 FE 66 67 B8 2D 22 28 DA 46 4B 10 DE 8E C6 29 63 EE 1D D3 D0 2C 66 03 17 D4 56 F5 C8 85 0F D2 B3 14 30 09 06 07 2A 85 03 02 02 1F 01", "diversData":"E0 20 46 46 C6 4A 85 0D 26 C8 8B 2F 7E 04 53 C6 31 93 46 D7 E6 67 FB 79 15 13 19 00 14 0D 91 31 AD FC EB 7F C8 87 23 CE", "openSessionKey":"8B 0C DA 8B DE C2 FF 21" }
Из примеров в .NET SDK не очень понятно, как расшифровать данное сообщение с помощью библиотеки CryptoPro.Sharpei. Приведите пример, пожалуйста.
Спасибо.
Вопрос решается на портале технической поддержки в рамках обращения № 33409. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 217
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 63 раз в 59 постах
|
Из-за формата экспорта Cades (используемого в плагине) (https://cpdn.cryptopro.ru/content/cades/interface_c_ad_e_s_c_o_m_1_1_i_symmetric_algorithm_c4e0dd92e80c132bc092a59b6ead4c8f_1c4e0dd92e80c132bc092a59b6ead4c8f.html) в котором используется PUBLICKEYBLOBEX (КриптоПро.NET понимает только PUBLICKEYBLOB) невозможно из коробки декодировать открытый эфемерный открытый ключ для расшифрования. В качестве более простого решения - использовать вместо КриптоПро.NET CadesCom. Через Interop можно пользоваться методами CADES, аналогичными плагину. https://www.cryptopro.ru/products/cades/sdkПосле установки нужно добавить в проект ссылку на Crypto-Pro CAdES 1.0 Type Library (в студии add reference - com - Crypto-Pro CAdES 1.0 Type Library). Расшифрование будет выглядеть сл. образом: Код:// читаем сертификат с ключом из хранилища по отпечатку
var oStore = new CAPICOM.Store();
oStore.Open(CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE);
var certificates = (CAPICOM.Certificates)oStore.Certificates;
var cadesCert = certificates.Find(CAPICOM.CAPICOM_CERTIFICATE_FIND_TYPE.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, "<Отпечаток>", false)[1];
oStore.Close();
// импортируем симметричный ключ
var rSymAlgo = new CAdESCOM.SymmetricAlgorithm();
rSymAlgo.ImportKey(ExportedKey, cadesCert);
rSymAlgo.DiversData = DiversData;
// получаем сессионный ключ
var rSesKey = rSymAlgo.DiversifyKey();
rSesKey.IV = oSesKeyIV;
rSesKey.DiversData = DiversData;
var decryptedData = rSesKey.Decrypt(EncryptedData, true);
Подробнее о методах в документации - http://cpdn.cryptopro.ru...tent/cades/cadescom.htmlps. Если необходимо для тестов - шифрование выглядит аналогично шифрованию в плагине Код:// предварительно загружен cadesCert
string dataToEncr = "AA00";
var oSymAlgo = new CAdESCOM.SymmetricAlgorithm();
oSymAlgo.GenerateKey();
var ExportedKey = (string)oSymAlgo.ExportKey(cadesCert);
var oSesKey = oSymAlgo.DiversifyKey();
var DiversData = oSesKey.DiversData;
var oSesKeyIV = (string)oSesKey.IV;
var EncryptedData = (string)oSesKey.Encrypt(dataToEncr, true);
|
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Расшифровать сообщение зашифрованное в 28147-89 с помощью Sharpei
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close