Проблемы с импортом ключа RSA на другой компьютер

Я создаю небольшой инструмент для шифрования и дешифрования с помощью пары ключей (открытый и закрытый ключи).
Я экспортирую открытый и закрытый ключи на свой компьютер и могу без проблем шифровать и дешифровать файлы. У меня проблема, когда я пытаюсь расшифровать файлы на другом компьютере с тем же открытым ключом.

// initializing CSP HCRYPTPROV hProv; HCRYPTKEY hKey;

if(!CryptAcquireContext(hProv, NULL, NULL, PROV_RSA_FULL, 0)){  if(GetLastError() == NTE_BAD_KEYSET){       if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET)){          return FALSE;       }   } }

// create a pair keys if (!CryptGenKey(hProv, AT_KEYEXCHANGE,  CRYPT_ARCHIVABLE, &hKey))    return FALSE;

// public key if (!CryptExportKey(hKey, 0, PUBLICKEYBLOB, 0, NULL, sizePublicKey))  return FALSE;

*publicKey = (BYTE *) LocalAlloc(LPTR, *sizePublicKey * sizeof(DWORD)); if(*publicKey == NULL)  return FALSE;

if (!CryptExportKey(hKey, 0, PUBLICKEYBLOB, 0, *publicKey, sizePublicKey))  return FALSE; // save public key on file

// private key if (!CryptExportKey(hKey, 0, PRIVATEKEYBLOB, 0, NULL, sizePrivateKey))   return FALSE;

*privateKey = (BYTE *) LocalAlloc(LPTR, *sizePrivateKey * sizeof(DWORD)); if(*publicKey == NULL)    return FALSE;

if (!CryptExportKey(hKey, 0, PRIVATEKEYBLOB, 0, *privateKey, sizePrivateKey))   return FALSE;

PrivateKey.key = (BYTE *) LocalAlloc(LPTR, *sizePrivateKey * sizeof(DWORD)); if(*publicKey == NULL)     return FALSE; // save private key on file//I encrypt file using  if(!CryptEncrypt(hKey, 0, TRUE, 0, cache, &sizeCache, BLOCK_SIZE_ENCRYPT)){
free(cache);
return FALSE;           }

//To decrypt file //First import public key

CryptImportKey(hProv, publicKey, sizePublicKey, 0, 0, &hKey)

//To decrypt:           if (!CryptDecrypt(hKey, 0, TRUE, 0, cache, &sizeCache)){
free(cache);
return FALSE;           }

На том же компьютере, что и программное обеспечение для ключей, создало приложение, которое шифрует и дешифрует правильно, но если я пытаюсь расшифровать файлы на другом компьютере, CryptDecrypt () завершился с ошибкой 80090003 (ошибка, полученная GetLastError ())
Любая идея? Что я делаю неправильно…?
Как я могу экспортировать открытый ключ на другой компьютер?
Спасибо!

0

Решение

Возможно, вы не экспортируете ключ, просто используете CSP, содержащий ключ, в то время как вы находитесь на том же компьютере, ключ хранится в контейнере, где вы «связываете» с помощью cryptoapi. После того, как вы перейдете на другой компьютер, контейнера нет, поэтому вы не можете использовать ключ.

Убедитесь, что закрытый ключ можно экспортировать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]