#security #cryptography #encryption
#Безопасность #криптография #шифрование
Вопрос:
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( amp;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. Пожалуйста, будьте более конкретными. Когда вы говорите, что строка завершается ошибкой, какой код ошибки она возвращает? Вы смотрели этот код ошибки в документации CryptLib?
Ответ №1:
Поиск в Google cryptlib CRYPT_ERROR_PARAM3
предполагает, что возникла проблема с вашим третьим параметром. Теперь посмотрите на страницу 186 руководства cryptlib, о CryptEncrypt
алгоритмах с открытым ключом:
Если длина зашифрованных данных не совпадает с размером ключа, функция вернет CRYPT_ERROR_PARAM3, чтобы указать, что длина недопустима.
Я никогда не использовал cryptlib, так что это обоснованное предположение, но, похоже, размер вашего открытого текста не подходит для используемого вами ключа.