| ||||
| ||||
На кнопку кинул такой код: HCRYPTPROV hProv=0; // HCRYPTHASH hPwdHash; CHAR * pszContainer="zaxs"; CHAR * pszProvider="Crypto-Pro Cryptographic Service Provider"; // DWORD dwFlags; DWORD res1; BYTE pbData[1000], bSecret[100]="Данные для шифрования"; DWORD cbData; CString aqsw; ALG_ID Algid=AT_KEYEXCHANGE; HCRYPTKEY hKey; DWORD dwSecretLen; if(!CryptAcquireContext(&hProv,pszContainer,pszProvider,2,CRYPT_NEWKEYSET)) { aqsw.Format("Ошибка в CryptAcquireContext: 0x%x\n", GetLastError()); AfxMessageBox(aqsw); } if(!CryptGetProvParam(hProv,PP_NAME,pbData,&cbData,0)) { aqsw.Format("Ошибка в CryptGetProvParam: 0x%x\n", GetLastError()); AfxMessageBox(aqsw); } if(!CryptGenKey(hProv,Algid,CRYPT_EXPORTABLE,&hKey)) { res1=GetLastError(); if(res1==ERROR_INVALID_HANDLE) AfxMessageBox("One of the parameters specifies an invalid handle."); if(res1==ERROR_INVALID_PARAMETER) AfxMessageBox("One of the parameters contains an invalid value. This is most often an invalid pointer."); if(res1==NTE_BAD_ALGID) AfxMessageBox("The Algid parameter specifies an algorithm that this CSP does not support."); if(res1==NTE_BAD_FLAGS) AfxMessageBox("The dwFlags parameter contains an invalid value."); if(res1==NTE_BAD_UID) AfxMessageBox("The hProv parameter does not contain a valid context handle."); if(res1==NTE_FAIL) AfxMessageBox("The function failed in some unexpected way."); if(res1==NTE_PERM) AfxMessageBox("При запросе функции CPAcquireContext() был создан ключевой контейнер с признаком CRYPT_VERIFYCONTEXT."); } dwSecretLen=strlen((char *)bSecret)+1; if(CryptEncrypt(hKey,NULL,TRUE,NULL,bSecret,&dwSecretLen,sizeof(bSecret))) {}; aqsw.Format("%s",bSecret); AfxMessageBox(aqsw); И выдает сообщение :Данные для шифрования Т.е. не произошло шифрации насколько я понимаю. А я если честно ничего не понимаю. | ||||
Ответы: | ||||
| ||||
Так ведь шифрование осуществляется только на сессионном ключе! | ||||