13.05.2002 16:39:31Простой тест encrypt/decrypt Ответов: 4
ak
НЕ РАБОТАЕТ!
т.е. ошибок нет, но и в результате CryptDecrypt не получается исходная строка.
В то время как для PROV_RSA_FULL и CALG_RC2 все работает как положено. В чем секрет?

#include "stdafx.h"
#include <windows.h>
#include <wincrypt.h>
#include <malloc.h>
#include "wincryptex.h" // crypto-PRO header
//#define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)
#define BUFFER_LEN 2048
int main(int argc, char* argv[])
{
HCRYPTPROV hProv;
HCRYPTKEY hSessionKey;

if (CryptAcquireContext(&hProv, NULL, CP_DEF_PROV,PROV_GOST_DH,0)){

CryptGenKey(hProv, CALG_G28147, CRYPT_EXPORTABLE, &hSessionKey);

BYTE *pbData = NULL;
pbData = (BYTE*) malloc (BUFFER_LEN);
DWORD dwDataLen= 0;
strcpy((char *)pbData, "crypt test");
dwDataLen=strlen((char *)pbData);

if ( !CryptEncrypt(hSessionKey,
0, // HCRYPTHASH hHash
TRUE, // BOOL Final
0, // dwFlags reserved
pbData, // in/out
&dwDataLen, // in/out
BUFFER_LEN) ) printf("\n GetLastError=%x", GetLastError());
else {
printf("\n encrypt %s? len=%d", pbData, dwDataLen);

if ( !CryptDecrypt(hSessionKey,
0, // HCRYPTHASH hHash
TRUE, // BOOL Final
0, // dwFlags reserved
pbData, // in/out
&dwDataLen)) // in/out
printf("\n GetLastError=%x", GetLastError());
else
printf("\n decrypt %s? len=%d", pbData, dwDataLen);

}
}
return 0;
}
 
Ответы:
13.05.2002 21:29:19kure
Посмотрите в примере export.c из примеров (http://www.cryptopro.ru/Cryptopro/test/sample.zip)

И здесь по поводу экспорта сессионного ключа по DH.
http://www.cryptopro.ru/CryptoPro/forum/myforum.asp?q=4
16.05.2002 20:42:31ak
Спасибо, пример очень помог, симметричное шифрование освоил.
Теперь проблемы с асимметричными алгоритмами. Хочется зашифровать чужим Public Key так, чтобы расшифровать мог только владелец соответствующего Private Key (без использования Public Key отправителя!).
Или так не делают, а нужно обязательно формировать ключ обмена и пользоваться симметричным криптованием?
27.09.2002 8:21:32sap
>Посмотрите в примере export.c из примеров (http://www.cryptopro.ru/CryptoPro/test/sample.zip)

Мне тоже интересен этот вопрос, однако, к моему сожалению я не нашел файл sample.zip по указанному Вами адресу. А в том файле sample.zip который есть в разделе примеров, нет файла export.c :(.
27.09.2002 11:15:58kure
Тест по адресу:
http://www.cryptopro.ru/CryptoPro/test/sample.zip

Действительно export.c там пока нет.

На открытых ключах непосредственно не шифруют. Везде делают сессионный ключ и пользуют симметричное шифрование. Вот в RSA сессионный ключ шифруется на открытом.