Security Cryptlib赢得';t使用El Gamal加密,而我不使用';我不明白为什么?

Security Cryptlib赢得';t使用El Gamal加密,而我不使用';我不明白为什么?,security,cryptography,encryption,Security,Cryptography,Encryption,谷歌搜索cryptlib CRYPT_ERROR_PARAM3表明您的第三个参数有问题。现在查看cryptlib手册第186页,关于公钥算法的CryptEncrypt: 如果加密的数据长度与密钥大小不同,函数将返回CRYPT_ERROR_PARAM3以指示长度无效 我从未使用过cryptlib,因此这是一个有根据的猜测,但看起来您的明文与您使用的密钥大小不匹配。请更具体一些。当你说一行失败时,它会返回什么错误代码?您是否在CryptLib文档中查找了该错误代码? unsigned char *

谷歌搜索
cryptlib CRYPT_ERROR_PARAM3
表明您的第三个参数有问题。现在查看cryptlib手册第186页,关于公钥算法的
CryptEncrypt

如果加密的数据长度与密钥大小不同,函数将返回CRYPT_ERROR_PARAM3以指示长度无效


我从未使用过cryptlib,因此这是一个有根据的猜测,但看起来您的明文与您使用的密钥大小不匹配。

请更具体一些。当你说一行失败时,它会返回什么错误代码?您是否在CryptLib文档中查找了该错误代码?
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 :-( */