gpt4 book ai didi

c++ - 在其他计算机上导入 RSA key 时出现问题

转载 作者:行者123 更新时间:2023-11-30 17:55:22 26 4
gpt4 key购买 nike

我正在创建一个使用一对 key (公钥和私钥)进行加密和解密的小工具。我在计算机上导出公钥和私钥,并且可以毫无问题地加密和解密文件。当我尝试使用相同的公钥解密其他计算机中的文件时遇到问题。

// 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; }

在 key 软件创建应用程序的同一台计算机上正确加密和解​​密,但如果我尝试解密其他计算机中的文件,CryptDecrypt() 会失败并出现错误 80090003(GetLastError() 得到的错误)任何想法?我究竟做错了什么...?如何将公钥导出到其他计算机?谢谢!

最佳答案

您可能没有导出 key ,只是使用包含 key 的 CSP,当您在同一台计算机上时, key 存储在您使用 cryptoapi“链接”的容器中。一旦您转到其他计算机,容器就不存在,因此您无法使用 key 。

确保私钥可导出。

关于c++ - 在其他计算机上导入 RSA key 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14371263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com