问题标签 [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.

0 投票
1 回答
1360 浏览

c - 在 C 中使用 OpenSSL 时 EVP_CIPHER_CTX_new() 中的分段错误

我是 C 语言 OpenSSL 库的完全初学者,但正在编写代码以使用库进行加密,同时将密码短语作为输入并从密码短语生成盐、IV 和密钥。这是我到目前为止所尝试的:

我试过了,但一直出现分段错误。我尝试调试并发现 EVP_CIPHER_CTX_new() 是在诅咒它的那个。我现在正在尝试调试它,我真的很感激一些帮助。

提前致谢。

0 投票
1 回答
2837 浏览

c - 使用 EVP 和 OpenSSL,使用 C 编码

我已经看到很多关于 OpenSSL 和 EVP 的问题,但没有太多明确的答案,但我想我仍然会在这里发布我的问题并希望得到更好的反馈。

给我的材料是一个签名文件“symmetrickey.bin”,一个RSA密钥集“privatekey_A.pem”,“publickey_A.pem”,以及另一个用户的公钥“publickey_B.pem”。

我需要做的是:

  1. 取消签名symmetrickey.bin并将其存储到文本文件中。
  2. message.txt例如,使用symmetrickey.txtAES 等算法对a 进行加密。
  3. 对加密消息进行签名privatekey_A.pem并写入文件cipher.bin
  4. 之后,我需要取消签名并验证cipher.bin.
  5. 然后用我们的对称密钥解密消息,然后写入另一个文件。

我遇到的问题是了解如何实现 OpenSSL EVP 库。API 页面不是很清楚每个函数的值来自哪里。例如,EVP_OpenInit()我从哪里得到ekek“ekl”的长度?“prvi”是私钥吗?我怎么知道类型?这些是我没有得到的东西。

我看过很多实现,但大多数都没有回答我的问题,或者他们给出了疯狂的代码,几乎没有解释发生了什么或值来自哪里。我在这里发帖作为最后的手段......

0 投票
1 回答
570 浏览

c - OpenSSL EVP API 无冲突与单向属性 MAC

我正在做一项任务,我必须使用 C 中的 OpenSSL EVP 库比较对无冲突 MAC 的蛮力攻击与单向属性 MAC 的比较。澄清一下,我不是在寻找任何帮助分配,只是执行EVP。

我创建了以下代码,它创建了给定输入字符串的哈希:

这完全符合创建哈希的需要。如何设置单向与无碰撞的属性?我无法在文档中找到任何具体内容,只需要围绕这一点进行澄清。

0 投票
1 回答
708 浏览

c - 使用 AES-128/CBC 时 EVP_DecryptFinal_ex 中的间歇性解密失败

我正在使用此处找到的 EVP 库:https ://www.openssl.org/docs/manmaster/crypto/EVP_EncryptInit.html

这是我的两个加密和解密函数:

我正在尝试使用 AES 128 CBC 加密字符串。

字符串通常是格式word1 word2 word3

问题是解密最终函数适用于某些字符串,但不适用于其他字符串。

如果加密之前的字符串类似于cat dog cow,则解密有效。

但如果是这样bat dog cow,解密尤其在EVP_DecryptFinal_ex()函数处失败。

EVP_DecryptFinal_ex()对于某些字符串,解密总是在函数处失败。它不返回 1。

知道问题可能是什么吗?填充可能吗?我似乎无法弄清楚。

0 投票
1 回答
1127 浏览

c - 使用 AES-128/CBC 时 EVP_DecryptFinal_ex 中的分段错误

这是我之前问题的延续:使用 AES-128/CBC 时 EVP_DecryptFinal_ex 中的间歇性解密失败

我正在尝试使用 C OpenSSL EVP 库进行加密和解密。在收到上述问题的答案后,我相应地更新了我的代码:

这个变量:

int len = outlen1 + outlen2;

存储在 encrypt 函数中加密的字节数。然后我将该变量传递给解密函数(传递未显示在下面的代码中),然后使用所谓的实际字节数。

EVP_DecryptFinal_ex()但是,在某些输入字符串上,我在函数中遇到分段错误。

加密/解密或填充的字节数显然有问题。我只是不知道那是什么。

笔记:

我能够解决我之前遇到的decrypt final 无法解密某些字符串的问题。这些字符串现在可以很好地解密。但是,其他一些字符串也面临同样的问题,但这次我遇到了段错误。

0 投票
1 回答
3214 浏览

openssl - OpenSSL EVP API:如何使用对称密钥文件解密加密文件

嗨,我正在 Linux 上研究 C。

我有一个与对称密钥解密相关的查询。

我使用以下命令生成了一个对称密钥。

openssl rand base64 512 > sym.key

使用这个密钥(sym.key)我已经用下面的命令加密了一个文件。

openssl enc -aes-256-cbc -in temp.txt -out temp.enc -kfile sym.key

它生成了一个加密文件temp.enc

现在,我必须对EVP Decrypt API使用相同的密钥 ( sym.key ),并且必须解密这个加密文件。

任何人都可以建议我为此提供更好的方法。

这是代码

谢谢你。

0 投票
1 回答
1877 浏览

c++ - 忽略调用 openssl EVP_cleanup 会导致严重缺陷或内存泄漏吗?

我的申请中有一个奇怪的情况。我正在使用 OpenSSL 中的 EVP 方法来计算摘要并执行加密。最后,我在 CryptoProvider 类(我的应用程序的主要网关)的析构函数中执行EVP_cleanup( )。它从 OpenSSL 状态卸载所有算法等。

但是,如果客户端将 OpenSSL 用于其他用途,这使得在我的应用程序之外无缝使用 OpenSSL 成为不可能。它也清理了他们的工作。

现在,我有以下选择:

  • 忽略 EVP_cleanup()。这会导致泄漏或其他后果吗?

  • 在我的应用程序中设置一个用于清理的静态 API,客户端必须在其生命周期结束时调用它,这在我的应用程序生命周期之后。

  • 只需相信客户端在其生命周期结束时调用 EVP_cleanup 即可。

你觉得你会在这里做什么?

0 投票
1 回答
701 浏览

encryption - OpenSSL EVP_OpenFinal 失败,即使密文已完全解密

我有一个问题,即使用 EVP_SealInit、EVP_SealUpdate 和 EVP_SealFinal 的加密过程正在工作并且没有返回任何失败代码。

尝试通过 EVP_OpenInit 和 EVP_OpenUpdate 解密消息,但是 EVP_OpenFinal 返回 0 失败。尽管函数返回 0,但完全解密的文本存储在输出缓冲区中,从 EVP_OpenFinal 返回的总输出长度与从返回的总长度相同EVP_SealFinal。

我引用了这篇 SO 帖子:OpenSSL RSA:无法加密/解密超过 16 个字节的消息

我相信 OP 通过修复修改了他的代码,所以我无法在那里获得太多帮助。值得注意的是,无论消息长度如何,我的问题都存在。在 EVP_OpenFinal 调用期间,10、15 和 140 字符消息都失败了,但每条消息都完全存储在输出缓冲区中。

加密:

解密:

错误处理:

如果有人能突出显示 OpenUpdate 和 OpenFinal 之间的内部差异,那么任何帮助突出我可能忽略的内容都会非常有用,这也可能会有所帮助。

谢谢!

0 投票
0 回答
138 浏览

c - OpenSSL EVP 泄漏字节

我正在使用OpenSSL 的 EVP 例程,无法消除所有仍可访问的内存。上面链接的教程泄漏了很多:

加上这里的答案,我可以把它归结为:

有没有可能消除这些?这是我什至应该打扰的事情吗?

我在 SO 上看到了相互矛盾的答案,指出“仍然可以访问”的内存是内存泄漏,而其他人则说不是,因此我感到困惑。

0 投票
1 回答
29 浏览

c++ - C++ EVP_EncriptUpdate 重写堆栈?

我有这个代码

输出是

当我“注释掉”EVP 更新函数时,循环会遍历所有 702000 次迭代。错误在哪里?是否有可能,EVP 以某种方式落后于其缓冲区并破坏堆栈数据?