Cryptlib 不会使用 El-Gamal 加密,我不明白为什么?

发布于 2024-11-05 19:52:56 字数 592 浏览 1 评论 0原文

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 :-( */
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 :-( */

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

素染倾城色 2024-11-12 19:52:56

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

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

我从未使用过 cryptlib,所以这是一个有根据的猜测,但看起来您的明文大小不适合您正在使用的密钥。

Googling for cryptlib CRYPT_ERROR_PARAM3 suggests that there was a problem with your third parameter. Now look at page 186 of the cryptlib manual, about CryptEncrypt for public-key algorithms:

If the encrypted data length isn’t the same as the key size, the function will return CRYPT_ERROR_PARAM3 to indicate that the length is invalid.

I have never used cryptlib so this is an educated guess, but it looks rather like your plaintext isn't an appropriate size for the key you are using.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文