• XSS.stack #1 – первый литературный журнал от юзеров форума

CryptoAPI / генерация пары RSA ключей.

iceberg

Sub zero
Пользователь
Регистрация
03.02.2019
Сообщения
84
Реакции
17
Всем привет. Имею следующий код :

#include <Windows.h>

HCRYPTPROV hProv;
HCRYPTKEY hKey;

bool InitRSA()
{
if (!CryptAcquireContextW(&hProv, NULL, MS_ENHANCED_PROV_W, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
{
if (GetLastError() == NTE_BAD_KEYSET)
{
return CryptAcquireContextW(&hProv, NULL, MS_ENHANCED_PROV_W, PROV_RSA_FULL, CRYPT_NEWKEYSET);
}
return false;
}
return true;
}

void Entry()
{
if (InitRSA())
{
if (CryptGenKey(hProv, AT_KEYEXCHANGE, 0x08000000 + CRYPT_EXPORTABLE, &hKey))
{
DWORD dwPublicKeyLen;
if (CryptExportKey(hKey, NULL, PUBLICKEYBLOB, 0, NULL, &dwPublicKeyLen))
{
BYTE* PublicKey = (BYTE*)LocalAlloc(0, sizeof(BYTE) * dwPublicKeyLen);
if (CryptExportKey(hKey, NULL, PUBLICKEYBLOB, 0, PublicKey, &dwPublicKeyLen))
{
HANDLE hFile = CreateFileW(L"public.txt", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
if (hFile != NULL)
{
WriteFile(hFile, &PublicKey, dwPublicKeyLen, 0, 0);
}
}
}
}
}
}

Но в public.txt пишется мусор. Укажите на ошибку. Спасибо.
 
А что ты ожидаешь там увидеть ? Как по твоему выглядит ключ, это по сути набор байт.

Какую-либо последовательность символов, которую я смогу вставить куда-либо.
 
А мусор как ты говоришь разве не последовательность символов ? В общем если ты ждешь что там появится формат который возвращает openssl при генерации ключей, который текстовой в BASE64, то читай про форматы ключей. Ты экспортируешь в формате PUBLICKEYBLOB, гугли что то типа key format der peb и читай как из PUBLICKEYBLOB получить то что ты хочешь.
 
А мусор как ты говоришь разве не последовательность символов ? В общем если ты ждешь что там появится формат который возвращает openssl при генерации ключей, который текстовой в BASE64, то читай про форматы ключей. Ты экспортируешь в формате PUBLICKEYBLOB, гугли что то типа key format der peb и читай как из PUBLICKEYBLOB получить то что ты хочешь.

Понял-принял. Спасибо!
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх