Blu*_*erk 8 c openssl cryptography evp-cipher
我找不到关于ENGINEOpenSSL 是什么的很好的解释。它用于像EVP_PKEY_CTX_new.
我EVP_PKEY_CTX_new在加密/解密某些东西之前使用EVP_PKEY_encrypt,EVP_PKEY_decrypt但是我真的需要ENGINE在调用EVP_PKEY_CTX_new. 我在 OpenSSL 内部查看的每个地方都将参数指定为 null。
所以我的问题是:ENGINEOpenSSL 中的什么是它,它的用途是什么,如果没有指定它有什么区别?
Dan*_*iel 13
引擎是用于执行加密操作的硬件或软件实现。默认引擎 ID 是openssl并使用 OpenSSL 的内置函数。
假设我们有一个具有超快速 AES 实现的硬件设备。现在,当我们使用 AES 加密时,我们可以将引擎设置为该硬件设备(而不是NULL),这意味着操作现在由硬件设备而不是默认的 OpenSSL 软件层计算。
这在Network Security with OpenSSL一书的第 4.6 节中进行了解释。
OpenSSL 内置了对加密加速的支持。使用
ENGINE对象类型,应用程序可以获得对可变的底层表示的引用,通常是硬件设备。(……)总体思路很简单:我们检索一个代表我们希望使用的硬件类型的对象,然后我们告诉 OpenSSL 使用我们选择的设备。
例 4-17显示了我们将如何执行此操作的一个小代码示例。
Run Code Online (Sandbox Code Playgroud)ENGINE *e; if (!(e = ENGINE_by_id("cswift"))) fprintf(stderr, "Error finding specified ENGINE\n"); else if (!ENGINE_set_default(e, ENGINE_METHOD_ALL)) fprintf(stderr, "Error using ENGINE\n"); else fprintf(stderr, "Engine successfully enabled\n");函数调用
ENGINE_by_id将从可用的内置方法中查找实现并返回一个ENGINE对象。此函数的单个参数应该是我们希望使用的底层实现的字符串标识符。(……)在
ENGINE我们从查找接收对象应在调用中使用,以ENGINE_set_default允许加密功能,利用特定的功能ENGINE。第二个参数允许我们指定允许引擎实现的约束。(……)
注意:cswift“用于 CryptoSwift”加速硬件。
| 归档时间: |
|
| 查看次数: |
7711 次 |
| 最近记录: |