- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个单线程客户端/服务器应用程序,需要对其网络通信进行加密和解密。我计划使用 OpenSSL 的 EVP API 和 AES-256-CBC。
我从几个示例中找到了一些示例伪代码:
// key is 256 bits (32 bytes) when using EVP_aes_256_*()
// I think iv is the same size as the block size, 128 bits (16 bytes)...is it?
1: EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
2: EVP_CipherInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv, 1); //0=decrypt, 1=encrypt
3: EVP_CipherUpdate(ctx, outbuf, &outlen, inbuf, inlen);
4: EVP_CipherFinal_ex(ctx, outbuf + outlen, &tmplen));
5: outlen += tmplen;
6: EVP_CIPHER_CTX_cleanup(ctx);
7: EVP_CIPHER_CTX_free(ctx);
EVP_CIPHER_CTX
只需一次并继续重复使用它直到应用程序结束? EVP_CIPHER_CTX
用于加密和解密,还是我应该创建其中 2 个? 最佳答案
很抱歉恢复旧线程,但我在接受的答案中注意到以下错误:
At line 1, do I create this EVP_CIPHER_CTX just once and keep re-using it until the application ends?
您每次使用创建一次。也就是说,当您需要加密时,您使用相同的上下文。如果您需要加密第二个流,您将使用第二个上下文。如果您需要解密第三个流,您将使用第三个上下文。
Also at line 1, can I re-use the same EVP_CIPHER_CTX for both encryption and decryption, or am I supposed to create 2 of them?
不,见上文。
这不是必需的。从 OpenSSL 的手册页:
New code should use EVP_EncryptInit_ex(), EVP_EncryptFinal_ex(), EVP_DecryptInit_ex(), EVP_DecryptFinal_ex(), EVP_CipherInit_ex() and EVP_CipherFinal_ex() because they can reuse an existing context without allocating and freeing it up on each call.
换句话说,您需要在每次使用之前重新初始化上下文,但您当然可以一遍又一遍地使用相同的上下文,而无需创建(分配)新的上下文。
关于aes - 我需要多个 EVP_CIPHER_CTX 结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24365646/
我有一个单线程客户端/服务器应用程序,需要对其网络通信进行加密和解密。我计划使用 OpenSSL 的 EVP API 和 AES-256-CBC。 我从几个示例中找到了一些示例伪代码: // key
我正在使用 OpenSSL EVP_Encrypt API,采用 AES_ctr_128 模式。我正在尝试检索更新的(增量计数器)在 OpenSSL 1.1.0 中,我们不能简单地执行以下操作:
问题:我需要将 Cepstral(tts 引擎)安装到运行 Debian 8 的 Freeswitch 中。Freeswitch 已经启动并运行,但我需要从源代码构建它,以便它创建 mod_cepst
我正在尝试从 OpenSSL 中的 EVP_CIPHER_CTX *ctx 或 EVP_CIPHER *kt 获取 iv 和 key 以及其他内容,例如加密系统名称。我搜索了很多,但没有找到返回 ke
我是一名优秀的程序员,十分优秀!