问题标签 [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 回答
148 浏览

c - 使用 EVP_des_ofb()、openSSL、C 对文本进行加密和解密的问题

我需要使用 OpenSSL 库使用 DES-ofb (libcrypto) 加密和解密 txt 文件,密钥和初始化向量在一个 bin.file(key+iv) 中给出。但是通过 EVP_DecryptUpdate() 解密后,解密后的文本和纯文本完全不相似。

解密难度

所以我读了plain.txt 8 个字节和一个'keyandIV.bin' 文件。比我从 keyandIVbuffer 中取出前 8 个字节作为 DES 的 KEY,其余的作为 IV。所以我有 8 个字节的密钥和 8 个字节的 IV,在两者的末尾添加了 '\0'(我需要 '\0' 吗?密钥长度必须是 64 位还是 56 位?)。

这是我使用 DES ofb 进行 ercryption 的代码:

比我拿加密的缓冲区和解密它:

我肯定对 DES 有理解问题。也许我从一个文件中创建密钥和 IV 做错了什么。我已经看过很多例子,但我仍然不明白我在程序中做错了什么。

0 投票
1 回答
1478 浏览

c++ - 如何解决此“EVP_DecryptFinal_ex:错误的最终块长度”错误?

我想加密神经网络的架构,这样我就可以保护我研究的知识财产。

这些文件之一的示例具有与示例类似的结构。

代码编译,但我得到一个我不知道如何解决的运行时错误。错误消息是数字信封例程:EVP_DecryptFinal_ex:wrong final block length

我使用 OpenSSL 版本 1.1.1a 2018 年 11 月 20 日

最相关的包括

与加密最相关的代码

打开并读取文件进行加密

加密

将密文写入新文件

DECRYPTION 最相关的代码

打开并读取加密文件

解密

我想就如何解决这个问题提供一些帮助。

0 投票
0 回答
230 浏览

c - 从文件中读取密文时,Openssl EVP API 无法解密密文(AES 128 ecb)

我正在尝试创建一个简单的应用程序来加密和解密一个小于 10 字节的小文件。我正在使用 C 的 OpenSSL API(AES-128 ecb 加密),当我加密字符串并将其保存到文件时遇到了一个奇怪的“错误”。

这里的问题是,如果我从文件中读取密文,虽然它正是我之前保存的那个,但它似乎没有被正确解密。

加解密函数如下图所示:

加密

解密

0 投票
0 回答
609 浏览

c++ - OpenSSL EVP_DecryptFinal_ex 在解密文件时返回“错误的最终块长度”错误

我正在使用该EVP Symmetric Encryption and Decryption算法来加密和解密文本文件。

加密工作文件,会生成一个新的加密文件,但是当我尝试解密文件时,它总是EVP_DecryptFinal_ex在第一次调用时崩溃。

我正在使用两个 Visual Studio 项目:一个用于加密,一个用于解密。
我使用的库我假设它们是在 DEBUG 模式下构建的(因为它们有 .pdb 文件),所以这也是我的项目的构建方式。(如果我选择发布模式,编译器将找不到 openssl 包含头)。

这是我得到的错误:

我使用的是 C++11 版本,这是我的代码:

我还读到这可能是一个填充问题,不确定是否是这种情况以及我应该怎么做。我不太擅长加密。

欢迎任何有关如何进一步进行的指示。如果您需要更多信息,请告诉我。

0 投票
0 回答
233 浏览

yii2 - SES SMTP 邮件给 openssl :EVP_CIPHER_CTX_set_key_length:invalid key length 错误

我们正在创建 Yii2 Rest API。我们正在实施 SES SMTP。电子邮件工作正常,但通过 API 响应,我们收到 500 内部服务器错误,胎儿错误如下:

“未捕获的异常 'yii\base\ErrorException' 和消息 'fgets(): SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:0607A082:数字信封例程:EVP_CIPHER_CTX_set_key_length:无效密钥长度”

完整的错误消息如下:

致命错误:未捕获的异常 'yii\base\ErrorException' 和消息 'fgets(): SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:0607A082:数字信封例程:EVP_CIPHER_CTX_set_key_length:invalid key length' in /var/www/html/ rington/advanced/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php:163 堆栈跟踪:#0 [内部函数]:yii\base\ErrorHandler->handleError(2, 'fgets(): SSL操作...', '/var/www/html/r...', 163,数组)#1 /var/www/html/rington/advanced/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php(163):fgets(资源ID#31)#2 /var/www/ html/rington/advanced/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(397): Swift_Transport_StreamBuffer->readLine(40) #3 /var/www/html/rington/advanced/vendor/swiftmailer /swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(277): Swift_Transport_AbstractSmtpTransport->_getFullResponse(40) #4 /var/www/html/rington/advanced/vendor/swiftmailer/swiftmailer/lib/c /var/www/html/rington/advanced/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php 在第163行

我尝试了 Google 搜索上给出的不同解决方案,但没有任何效果。

请帮忙。

提前致谢。

0 投票
1 回答
2936 浏览

c - ESP数据包的C AES-GCM解密不起作用

我正在尝试解密使用 AES128-GCM12 加密的 ESP 数据包。我使用 c openssl 库进行解密。但是解密结果是错误的!

我使用了两个 Linux 18.04 VM 来模拟带有 strongswan IPsec 的 ESP 数据包。我捕获了 ESP 数据包并在我的解密函数中打印了我的整个变量。

这是我捕获的数据包。

这是我打印的变量

解密的有效载荷应该是一些 ICMP 数据包。但这是错误的!是解密方法错误,还是变量错误地进入了数据包?

0 投票
1 回答
597 浏览

c - 使用 C openssl AES-GCM 加密创建 ESP 数据包会引发错误的 ICV

我正在尝试使用 AES128-CCM16 加密我的 ICMP 数据包。我使用 c openssl 库进行加密。但是加密结果是错误的!

我使用了两个 Linux 18.04 VM 来模拟带有 strongswan IPsec 的 ESP 数据包。我捕获了 ESP 数据包并在我的解密函数中打印了我的整个变量。

这是我捕获的数据包

这是我打印的变量

原始有效载荷

钥匙

AAD

智能汽车

加密有效载荷

我用零填充的 ICV 发送了这个数据包,但 Linux IPsec 丢弃了这个数据包。我错过了任何openssl选项吗?

我用了

参数 icv_len=16,但它只创建 12 字节的 ICV。

0 投票
1 回答
708 浏览

c - 为什么 OpenSSL EVP C 库和 Python 生成的密文存在差异?

我看到生成的密文有所不同(解密也失败了,但那是另一回事了——我首先需要加密输出正确/符合预期)。我使用 Python(Pycryptodome)运行加密,并看到标签和加密数据的不同结果。我不确定在假设 OpenSSL 库需要什么时我哪里出错了。

为清楚起见,我使用的是 AES-256 GCM 模式。

我也尝试过使用这个站点来即时生成加密数据,虽然它不允许添加 aad,但密文与我使用 Python 脚本得到的内容相匹配。

C代码

附加 C 代码

用于测试的 Python 代码

我看到 C 的密文输出为: 3980cab3c0f841eb6fac4872a2757859e1ceaa6efd984628593b4ca1e19c7d773d0c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710

但来自 Python 的是 522dc1f099566d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662

0 投票
0 回答
163 浏览

android - EVP_CipherInit_ex 在未使用时崩溃,在解密密码时

部分代码在一个android/ios通用原生库C++代码上。

链接又是 OpenSSL 1.1.1

使用版本 1.0.# 或更早版本,我们曾经拥有EVP_CIPHER_CTX ctx(不是作为指针)并且我们曾经拥有EVP_CipherInit_ex但在有关使用 EVP 和 1.1.1 版本解密的各种帖子以及官方指南之后将其删除

在解密密码的方法中,使用了以下 EVP 序列。

偶尔会出现崩溃,回溯是单个 CipherInit 引用,如下所示。

那么问题来了,应该EVP_CipherInit_ex用吗?

还有怎么可能在不使用它的情况下发生崩溃?

0 投票
1 回答
1307 浏览

c - openssl EVP_CipherFinal_ex 失败

从这里file_encrypt_decrypt得到了使用 AES256 CBC 对文件进行加密和解密的以下函数。 如果我同时从同一个程序进行加密和解密,(最后给出的主要功能)加密和解密工作正常。尽管同时调用了相同的函数并再次启动了 ctx 。

如果我评论加密部分,传递上面创建的 encrypted_file,解密失败并出现错误:
错误:EVP_CipherFinal_ex 失败。OpenSSL 错误:错误:06065064:lib(6):func(101):reason(100)
[[有意义]] OpenSSL 错误:错误:06065064:数字信封例程:EVP_DecryptFinal_ex:解密错误

人们在某处谈论一些填充长度问题。但我无法正确弄清楚。
另外,如果在同一个程序中单独进行加密,那么相同的功能如何正常工作,但它失败了?

一些指导将不胜感激。

PS:我尝试了使用 , 和类似的加密和解密函数,而不是通用函数,EVP_DecryptInit_ex()但没有效果EVP_DecryptUpdate()EVP_DecryptFinal_ex()

完整代码: