12.04.2003 16:43:10Основы шифрования Ответов: 2
Куканов В.В.
Расскажите плз как происходит механизм шифрования. Я видел в МСДНовом примере как генерировался сессионный ключ. А потом он экспортировался. Я думал что нужно экспортировать открытый ключ. Может я что-то неправильно понял?
И еще вопрос при генерации сессионного ключа надо использовать алгоритм CALG_G28147, но компилятор именно на такой флаг ругается. А на Эфемерный Ключ Диффи-Хелмана - нет. Что нужно сделать чтобы можно было использовать этот алгоритм?
 
Ответы:
14.04.2003 9:23:54Uri
Для экспорта сессионного ключа следует выполнить следующие шаги:
· Импорт блоба открытого ключа получателя на своей ключевой паре;
· Экспорт сессионного ключа на ключе парной связи.
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.
15.04.2003 13:07:31Куканов В.В.
Спасибо.
Попробую.