问题标签 [evp-cipher]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
openssl - 带有自定义引擎 openssl 的 RSA
我希望使用自定义引擎运行此(URL)代码:https ://sehermitage.web.fc2.com/program/src/rsa_evp.c
我想用引擎实现以下功能。
如何使用自定义引擎注册这些功能?我没有找到任何 ENGINE_set_*** 类型的函数来注册相应的函数。谁能指导我如何进行此操作。
openssl - 打印 EVP_PKEY_CTX 结构的值时出错
在测试仪方面,我正在尝试打印结构 evp_pkey_ctx_st 的值,但在取消引用指向不完整类型 EVP_PKEY_CTX 的指针时出现错误。
任何人都可以请指导我。这是一种可行的方法吗?我们可以在引擎或测试器端打印结构值吗?
c++ - 将文件读取为 unsigned char* 以在 C++ 中使用 openssl 进行加密
据我所见,openssl 中的 EVP 功能仅接受unsigned char *
作为输入。一个示例代码是:
我想打开/读取任何类型的文件并将其用作纯文本来加密它。这样的代码如何使我能够读取任何类型的文件?
尝试时,我总是以初始化错误告终:
是否还有其他库也支持 aead 或 openssl funktion 更足以完成此任务?
我得到的错误信息是:
另外代码必须是c++,不能使用c。
c++ - Openssl EVP“EVP_CTRL_GCM_GET_TAG”失败
我在 C++ 中使用 Openssl EVP。不知何故获取标签失败。我的代码:
但为什么?所有其他的 EVP 功能都做得很好。我想念什么?我必须调用其他功能吗?而不是标签,@\267* 被写入 tag.txt 文件。
encryption - Openssl EVP 的 HMAC 验证出错
我编写的代码以某种方式无法正常工作。当通过在线工具使用相同的密钥和密码时,hmac 是不同的。
我的代码是:
我的代码计算出来的hmac是:eadfb51c9fb3f3fcd5741006861d04bc0d695347db4bfb9e04e954e17583c3c5。
online-tool计算的hmac为:a9e0f9acc1452bdb796556c3c64e29d7f7ab47a59a179ec918c61894eefeba26。
我究竟做错了什么?
c++ - 如何使用openssl EVP解密?
我正在尝试使用 C 解密文件(但我可以更改为 C++),但我不知道如何正确使用 EVP 库。
我要复制的控制台命令是:
我使用 EVP 的实际 C 代码是:
我想这不起作用,因为我必须声明一些东西来使用 SHA1 而不是 SHA256(rc2-ecb 上的默认值),但我不知道该怎么做。
任何帮助将不胜感激
c - C加密逻辑与java不匹配
我正在寻找以下 java 代码的等效 C 代码。我正在尝试编写两个应用程序,一个在 java 中,另一个在 C 中。Java 应用程序使用以下逻辑加密/解密“字符串”,并且在使用以下 java 方法时它正在工作。
我从上面的 JAVA 代码中了解到的是:
对于加密:
- 我们使用 HMAC-sha256 来生成“key”,它需要“salt”、“password”。
- 填充输入数据。
- 我们使用 AES-CBC-256 加密填充的输入数据,使用上面生成的“key”和“iv”。
- 我们使用 base64 对加密数据进行编码。
解密:
- 我们使用 HMAC-sha256 来生成“key”,它需要“salt”、“password”。
- 我们使用 base64 解码并获取加密数据。
- 我们使用 AES-CBC-256 来解密加密数据,使用上面生成的密钥和 iv。
- 修剪解密的数据。
为了在 C 中复制相同的内容,我使用了下面链接中的加密/解密方法; EVP对称加解密
为了生成密钥,我使用“PKCS5_PBKDF2_HMAC”和 EVP_MD 作为“EVP_sha256()”。
对于 base64 编码/解码: base64 编码/解码
我还处理了填充和修剪逻辑。但是我从 java 和 c 代码中得到了不同的加密数据。我在这里错过了什么吗?
如果您在 C 中有任何示例函数,那将非常有帮助。
c - 如何使用 OpenSSL EVP API 中的密钥索引加密/解密?
我的系统包括一个硬件安全模块(HSM),它将对称/非对称密钥导入其内部存储器,然后为外部用户提供密钥索引以供将来使用(加密/解密)。
我现在正在为此 HSM 编写一个 OpenSSL 引擎,预计应用程序将通过 OpenSSL EVP API 调用该引擎。
应用程序级代码(用 C 语言)通过 EVP API 函数调用加密服务(例如,通过存储在 HSM 中的用户密码加密某些内容)的正确方法是什么,只需在参数中提供密钥索引,而不是密钥本身?
我知道 EVP 和引擎 API 为开发人员提供了一些“控制功能”,但它们似乎用于命令行参数。我想知道在库使用中使用它们传递键索引是否是正确的方法。
更新:
我现在正在尝试使用EVP_CIPHER中的ctrl函数将密钥导入 HSM。
我想知道哪个更好,在“init_ex”步骤(在EVP_CIPHER->init中调用ctrl)或在“do_cipher”步骤中(使用EVP_CIPHER_CTX_set_app_data在 do_cipher 之前将密钥传递给app_data,然后在 do_cipher 中调用ctrl)?
encryption - 有没有办法在 openssl v1.1.0 或更高版本中设置不透明结构的成员?
我正在重组旧代码以与 OpenSSL 1.1.1 兼容,在从 1.0.2 -> 1.1.1 升级 OpenSSL 期间,多个结构变得不透明并且不再可能直接访问成员。
我需要将 EVP_CIPHER_CTX 的 buf_len 设置为 0。有没有办法做到这一点?
c++ - C++ 中的 OpenSSL 加密/解密命令行
你能告诉我用于加密文件的命令行 OpenSSL 命令的 C++ 等效项是什么吗?
openssl enc -nosalt -aes-256-cbc -kfile c:\temp\key -in c:\temp\binary.png -out c:\temp\binary.enc
并再次解密该文件:
openssl enc -nosalt -aes-256-cbc -kfile c:\temp\key -d -in c:\temp\binary.enc -out c:\tmp\binary.png
上面的两行都在命令行上工作,但在 c++ 中不行,我试过这个:
我从 C++ 代码中获得了一个加密文件,但是当我尝试通过命令行对其进行解密时,我得到: