Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2015(UTC) Сообщений: 18 Откуда: Ростов-на-Дону
|
Здравствуйте, подскажите, пожалуйста, как передать сессионный ключ по сети с одного компьютера(производящего шифрование) на другой компьютер для расшифровки.
DWORD dwBlobLenSimple; // Длина сессионного ключевого BLOBа CryptExportKey(hSessionKey, hAgreeKey, SIMPLEBLOB, 0, NULL, &dwBlobLenSimple); char *pbKeyBlobSimple = new char[dwBlobLenSimple]; // Указатель на сессионный ключевой BLOB // Зашифрование сессионного ключа на ключе Agree. CryptExportKey(hSessionKey, hAgreeKey, SIMPLEBLOB, 0, pbKeyBlobSimple, &dwBlobLenSimple);
dwBlobLenSimple получаем 100 байт, а в pbKeyBlobSimple всего 2 байта. После передачи pbKeyBlobSimple на другой компьютер в потоке TMemoryStream восстановить сессионный ключ не удаётся. При работе на одной машине, объявляя сессионный ключ как глобальную переменную, сообщение получается расшифровать.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
А ошибку метод не возвращает? Как узнали, что два байта? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2015(UTC) Сообщений: 18 Откуда: Ростов-на-Дону
|
Поставили точку останова и навели на переменную. Показало массив из 2-х байт. Ошибку не возвращает.
Пытаемся восстановить сессионный ключ так: CryptImportKey(hProv, pbKeyBlob, dwBlobLen, hKey, 0, &hAgreeKey); CryptImportKey(hProv, pbKeyBlobSimple, dwBlobLenSimple, hAgreeKey, 0, &hSessionKey);
Не расшифровывает. Может мы как-то не так данные из сессионного ключа получаем?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,702 Сказал «Спасибо»: 500 раз Поблагодарили: 2050 раз в 1590 постах
|
Автор: NIISIIS Поставили точку останова и навели на переменную. Показало массив из 2-х байт. Ошибку не возвращает.
Пытаемся восстановить сессионный ключ так: CryptImportKey(hProv, pbKeyBlob, dwBlobLen, hKey, 0, &hAgreeKey); CryptImportKey(hProv, pbKeyBlobSimple, dwBlobLenSimple, hAgreeKey, 0, &hSessionKey);
Не расшифровывает. Может мы как-то не так данные из сессионного ключа получаем?
А почему в коде нет проверки результатов функций, код и текст ошибки никуда не выводятся? Начните с этого. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2015(UTC) Сообщений: 18 Откуда: Ростов-на-Дону
|
Все команды до этого возвращают true
CryptImportKey(hProv, pbKeyBlobSimple, dwBlobLenSimple, hAgreeKey, 0, &hSessionKey); Здесь возвращает false. А как из него выцарапать текст и код ошибки?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,702 Сказал «Спасибо»: 500 раз Поблагодарили: 2050 раз в 1590 постах
|
Автор: NIISIIS Все команды до этого возвращают true
CryptImportKey(hProv, pbKeyBlobSimple, dwBlobLenSimple, hAgreeKey, 0, &hSessionKey); Здесь возвращает false. А как из него выцарапать текст и код ошибки?
GetLastError |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2015(UTC) Сообщений: 18 Откуда: Ростов-на-Дону
|
код ошибки 2148073477
Это что значит? Неправильно данные из сессионного ключа получаются? Как тогда их правильно получить для передачи? Когда делаем на одном компе, объявляя сессионный ключ как глобальную переменную - всё проходит без ошибок и информация расшифровывается.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,702 Сказал «Спасибо»: 500 раз Поблагодарили: 2050 раз в 1590 постах
|
Автор: NIISIIS код ошибки 2148073477
Это что значит? Неправильно данные из сессионного ключа получаются? Как тогда их правильно получить для передачи? Когда делаем на одном компе, объявляя сессионный ключ как глобальную переменную - всё проходит без ошибок и информация расшифровывается. 2148073477или поиск по форуму. Пишите на основании примеров из SDK? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2015(UTC) Сообщений: 18 Откуда: Ростов-на-Дону
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2015(UTC) Сообщений: 18 Откуда: Ростов-на-Дону
|
При формировании блоба из публичного ключа получаем тоже 2 байта вместо 100 [img]https://fotki.yandex.ru/next/users/losevscky-mihail/album/504643/view/1389339[/img] В чём может быть ошибка?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close