10.04.2003 12:12:51Шифрование Ответов: 1
Куканов В.В.
На кнопку кинул такой код:

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);

И выдает сообщение :Данные для шифрования
Т.е. не произошло шифрации насколько я понимаю. А я если честно ничего не понимаю.
 
Ответы:
10.04.2003 15:57:54Василий
Так ведь шифрование осуществляется только на сессионном ключе!