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

openssl - EVP_CIPHER* 来命名

我有一个EVP_CIPHER*by using EVP_get_cipherbyname("AES-256-CTR"),现在我想找到一种方法从EVP_CIPHER*后面恢复到原始名称,在本例中为“AES-256-CTR”。

在 libcrypto 中有没有办法做到这一点?

0 投票
1 回答
463 浏览

rsa - 使用 .pem 文件中的公钥进行 RSA 加密

我正在使用 RSA_public_encrypt 函数将加密数据发送到套接字。我正在使用“pkey = PEM_read_PUBKEY(f, NULL, NULL, NULL);”从 .PEM 文件中读取公钥 功能。从上述函数中检索到的“pkey”属于 EVP_PKEY* 类型,我不能在函数 RSA_public_encrypt 中使用它。(RSA_public_encrypt 使用 RSA* 类型的密钥)

如何将 EVP_PKEY *pkey 转换为 RSA *rsa?

0 投票
0 回答
560 浏览

ios - OpenSSL iOS 线程安全问题

我正在使用以下 openssl 函数:

  • PKCS5_PBKDF2_HMAC_SHA1
  • EVP_BytesToKey
  • EVP_aes_256_cbc
  • EVP_sha1
  • EVP_CIPHER_CTX_init
  • EVP_EncryptInit_ex
  • EVP_DecryptInit_ex
  • EVP_CIPHER_CTX_cleanup
  • EVP_DecryptUpdate
  • EVP_DecryptFinal_ex
  • EVP_EncryptUpdate
  • EVP_EncryptFinal_ex

在后台线程上解密数据时,如果数据大小相当小,则没有问题。

对于大约 500 KB 的数据,解密例程总是会崩溃,EVP_DecryptUpdate但在主线程上很好。

是什么赋予了?

0 投票
1 回答
141 浏览

linux - OpenSSL 中的 EVP_DecryptFinal

我正在开发一个 OpenSSL 项目。在使用EVP下的加解密功能时。EVP_Decrypt_Final 没有显示错误,但在每个 OP_SIZE 之后,解密文件中都会有 8 个字节的额外数据。我与其他各种用户一起使用了 stackoverflow 中给出的程序,但错误是相同的。

请帮忙 :)

0 投票
2 回答
666 浏览

openssl - OpenSSL EVP_CIPHER 免费/发布

我找不到像EVP_CIPHER_freein那样的任何方法openssl/evp.h。我不需要释放 EVP_CIPHERs 吗?

0 投票
0 回答
208 浏览

haskell - HsOpenSSL 密码结果与 M2Crypto 和命令行不同?

我正在编写一个程序来与另一个用 python 编写的程序交互。我发现加密的结果是不同的。

在 ghci 中,使用 HsOpenSSL,加密结果是\GS\n\197:

在python中,加密的结果是K\x10<Q

在 shell 中,abcd.txt包含字符串“abcd”,abcd.bin在 vi​​m 中显示为K^P<Q}

我假设 M2Crypto 结果等同于命令行结果,为什么 HsOpenSSL 结果不同?

0 投票
0 回答
733 浏览

openssl - OpenSSL EVP 和 CryptoJS

据说 CryptoJS 与 OpenSSL 兼容,运行演示时可以注意到这一点。

现在我想使用 OpenSSL EVP API 实现相同的行为:使用密码对字符串进行加密,并与必须能够解密它的 CryptoJS 交换结果(知道密码)。

我怀疑交换 iv 的标准方式(我认为这是 CryptoJS 和 OpenSSL 兼容性的关键)。

我应该如何将 iv 与加密消息一起发送?

PS:请不要担心客户端加密/解密,因为我对用例很满意。

更新

使用 OpenSSL 命令行工具加密

U2FsdGVkX18Z8dTy1NR6/gm+9IxmbuT8iCblIjvV76E=

用 CryptoJS 解密

在我的用例中,我想使用 EVP API 而不是 openssl 命令行工具进行加密。我错过了如何将密文、iv 和 salt 完全“打包”在一个字符串中,就像在 "U2FsdGVkX18Z8dTy1NR6/gm+9IxmbuT8iCblIjvV76E="

更新 2

我以Saju Pillai 为例作为起点。

更新 3

我的问题是关于密文的“可互换性”。我得到以下部分

  • 键: 79A38D896D90DBFE5E151A326602BC3A4A9081F3F9BEAC08EF058B96BA51CF19
  • iv : 76614325D3DA73698DDD220431AE298E00000000000000000000000000000000
  • 密文: QfCKTtVPlDcTOhC5ylwKFQ==

我希望向客户端发送一个字符串,该字符串必须能够破译字符串并获得解密过程所需的部分(这正是我在 CryptoJS 和 OpenSSL 之间观察到的)

0 投票
1 回答
1181 浏览

c - 如何将零填充设置为 EVP_CIPHER?

使用 EVP_CIPHER 时可以设置零填充。

我知道默认填充EVP_EncryptInit_ex已启用,并且它使用 PKCS 填充。

并且EVP_CIPHER_CTX_set_padding您只能启用和禁用填充。

0 投票
1 回答
2110 浏览

c - 支持 AES-NI 的 EVP 接口

在 C/C++ 中使用 OpenSSL 加密库时,EVP 接口是否自动支持 AES-NI 硬件加速(假设处理器支持)?参考this,看来命令行 OpenSSL 确实有支持。我想知道是否必须使用特定的函数调用来利用这种支持。

例如,如果我使用EVP_EncryptInit_ex(ctx, type, imp, key, iv),这些参数是否必须指定 NI 加速?即会EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv)成功吗?

谢谢!

0 投票
1 回答
4100 浏览

c - 使用 C 中的 EVP api 使用 openssl 加密文件的正确方法

我正在尝试做的事情:加密可执行文件,然后再解密。

我的问题是:通过exe正确循环。

这是我的代码目前的样子:

当然有更好的方法来设置密钥和 iv(我正在看这本书网络安全与 openssl)。这不是我的问题,我的问题是我应该如何正确加载一个 exe,并对其进行加密。据我了解,我应该以 rb 模式打开它并阅读它。我不明白我应该使用什么大小的块。我知道我必须在调用 EVP_EncryptUpdate 时输入输入缓冲区和缓冲区长度。我想知道我应该如何阅读输入 exe。我应该遍历文件并每次迭代读取一个 AES_BLOCK_SIZE 吗?实现这一目标的正确方法是什么?