Cryptlib не будет шифровать с Эль-Гамаль, и я не понимаю, почему? - PullRequest
0 голосов
/ 10 мая 2011
unsigned char * BUFFER_PTR;
CRYPT_CONTEXT cryptContext;

// Initialize the buffer
BUFFER_PTR = (unsigned char *) malloc(sizeof(char) * BUFFER_SIZE);
memset(BUFFER_PTR, 'X', BUFFER_SIZE);

//Initialize crytplib
cryptInit();
// create encryption context
cryptCreateContext( &cryptContext, CRYPT_UNUSED, CRYPT_ALGO_ELGAMAL);
cryptSetAttributeString( cryptContext, CRYPT_CTXINFO_LABEL, KEY_ID, strlen(KEY_ID));
cryptGenerateKey(cryptContext);

/* ERROR >>>*/ cryptEncrypt(cryptContext, BUFFER_PTR, BUFFER_SIZE); /* this line fails and I don't know why :-( */

1 Ответ

2 голосов
/ 10 мая 2011

Поиск в Google для cryptlib CRYPT_ERROR_PARAM3 предполагает, что была проблема с вашим третьим параметром.Теперь посмотрите на страницу 186 руководства по cryptlib, около CryptEncrypt для алгоритмов открытого ключа:

Если длина зашифрованных данных не совпадает с размером ключа, функция вернет CRYPT_ERROR_PARAM3 вукажите, что длина недопустима.

Я никогда не использовал cryptlib, так что это обоснованное предположение, но похоже, что ваш открытый текст не соответствует размеру используемого вами ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...