问题标签 [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.
c - 在 C 中使用 OpenSSL 时 EVP_CIPHER_CTX_new() 中的分段错误
我是 C 语言 OpenSSL 库的完全初学者,但正在编写代码以使用库进行加密,同时将密码短语作为输入并从密码短语生成盐、IV 和密钥。这是我到目前为止所尝试的:
我试过了,但一直出现分段错误。我尝试调试并发现 EVP_CIPHER_CTX_new() 是在诅咒它的那个。我现在正在尝试调试它,我真的很感激一些帮助。
提前致谢。
c - 使用 EVP 和 OpenSSL,使用 C 编码
我已经看到很多关于 OpenSSL 和 EVP 的问题,但没有太多明确的答案,但我想我仍然会在这里发布我的问题并希望得到更好的反馈。
给我的材料是一个签名文件“symmetrickey.bin”,一个RSA密钥集“privatekey_A.pem”,“publickey_A.pem”,以及另一个用户的公钥“publickey_B.pem”。
我需要做的是:
- 取消签名
symmetrickey.bin
并将其存储到文本文件中。 message.txt
例如,使用symmetrickey.txt
AES 等算法对a 进行加密。- 对加密消息进行签名
privatekey_A.pem
并写入文件cipher.bin
。 - 之后,我需要取消签名并验证
cipher.bin
. - 然后用我们的对称密钥解密消息,然后写入另一个文件。
我遇到的问题是了解如何实现 OpenSSL EVP 库。API 页面不是很清楚每个函数的值来自哪里。例如,EVP_OpenInit()
我从哪里得到ek
或ek
“ekl”的长度?“prvi”是私钥吗?我怎么知道类型?这些是我没有得到的东西。
我看过很多实现,但大多数都没有回答我的问题,或者他们给出了疯狂的代码,几乎没有解释发生了什么或值来自哪里。我在这里发帖作为最后的手段......
c - OpenSSL EVP API 无冲突与单向属性 MAC
我正在做一项任务,我必须使用 C 中的 OpenSSL EVP 库比较对无冲突 MAC 的蛮力攻击与单向属性 MAC 的比较。澄清一下,我不是在寻找任何帮助分配,只是执行EVP。
我创建了以下代码,它创建了给定输入字符串的哈希:
这完全符合创建哈希的需要。如何设置单向与无碰撞的属性?我无法在文档中找到任何具体内容,只需要围绕这一点进行澄清。
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。
知道问题可能是什么吗?填充可能吗?我似乎无法弄清楚。
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 无法解密某些字符串的问题。这些字符串现在可以很好地解密。但是,其他一些字符串也面临同样的问题,但这次我遇到了段错误。
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 ),并且必须解密这个加密文件。
任何人都可以建议我为此提供更好的方法。
这是代码
谢谢你。
c++ - 忽略调用 openssl EVP_cleanup 会导致严重缺陷或内存泄漏吗?
我的申请中有一个奇怪的情况。我正在使用 OpenSSL 中的 EVP 方法来计算摘要并执行加密。最后,我在 CryptoProvider 类(我的应用程序的主要网关)的析构函数中执行EVP_cleanup( )。它从 OpenSSL 状态卸载所有算法等。
但是,如果客户端将 OpenSSL 用于其他用途,这使得在我的应用程序之外无缝使用 OpenSSL 成为不可能。它也清理了他们的工作。
现在,我有以下选择:
忽略 EVP_cleanup()。这会导致泄漏或其他后果吗?
在我的应用程序中设置一个用于清理的静态 API,客户端必须在其生命周期结束时调用它,这在我的应用程序生命周期之后。
只需相信客户端在其生命周期结束时调用 EVP_cleanup 即可。
你觉得你会在这里做什么?
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 之间的内部差异,那么任何帮助突出我可能忽略的内容都会非常有用,这也可能会有所帮助。
谢谢!
c - OpenSSL EVP 泄漏字节
我正在使用OpenSSL 的 EVP 例程,无法消除所有仍可访问的内存。上面链接的教程泄漏了很多:
加上这里的答案,我可以把它归结为:
有没有可能消除这些?这是我什至应该打扰的事情吗?
我在 SO 上看到了相互矛盾的答案,指出“仍然可以访问”的内存是内存泄漏,而其他人则说不是,因此我感到困惑。
c++ - C++ EVP_EncriptUpdate 重写堆栈?
我有这个代码
输出是
当我“注释掉”EVP 更新函数时,循环会遍历所有 702000 次迭代。错误在哪里?是否有可能,EVP 以某种方式落后于其缓冲区并破坏堆栈数据?