| ||||
| ||||
Расскажите плз как происходит механизм шифрования. Я видел в МСДНовом примере как генерировался сессионный ключ. А потом он экспортировался. Я думал что нужно экспортировать открытый ключ. Может я что-то неправильно понял? И еще вопрос при генерации сессионного ключа надо использовать алгоритм CALG_G28147, но компилятор именно на такой флаг ругается. А на Эфемерный Ключ Диффи-Хелмана - нет. Что нужно сделать чтобы можно было использовать этот алгоритм? | ||||
Ответы: | ||||
| ||||
Для экспорта сессионного ключа следует выполнить следующие шаги: · Импорт блоба открытого ключа получателя на своей ключевой паре; · Экспорт сессионного ключа на ключе парной связи. CPGetUserKey(hProv, AT_KEYEXCHANGE, &hUserKey); CPGenKey(hProv, CALG_G28147, CRYPT_EXPORTABLE, &hSessionKey); CPImportKey(hProv, pbRecipentPublicKey, cbRecipentPublicKey, hUserKey, 0, &hExchKey); - здесь у нас будет выработан ключ парной связи Деффи-Хелмана CPExportKey(hProv, hSessionKey, hExchKey, SIMPLEBLOB, 0, pbSessionKeyForRecipient, &cbSessionKeyForRecipient); Т.е. для импорта сессионного ключа следует выполнить следующие шаги: · Импорт блоба открытого ключа отправителя на своей ключевой паре; · Импорт сессионного ключа на ключе парной связи. CPGetUserKey(hProv, AT_KEYEXCHANGE, &hUserKey); CPImportKey(hProv, pbSenderPublicKey, cbSenderPublicKey, hUserKey, 0, &hExchKey); CPImportKey(hProv, pbSessionKeyFromSender, &cbSessionKeyFromSender, hExchKey, 0, &hSessionKey); А что бы компилятор не "ругался" на идентификаторы не забудьте добавить эйч-файл WinCryptEx.h, который входит в состав примера на дистрибутиве СКЗИ КриптоПро CSP. | ||||
| ||||
Спасибо. Попробую. | ||||