问题标签 [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 - EVP_CIPHER* 来命名
我有一个EVP_CIPHER*
by using EVP_get_cipherbyname("AES-256-CTR")
,现在我想找到一种方法从EVP_CIPHER*
后面恢复到原始名称,在本例中为“AES-256-CTR”。
在 libcrypto 中有没有办法做到这一点?
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?
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
但在主线程上很好。
是什么赋予了?
linux - OpenSSL 中的 EVP_DecryptFinal
我正在开发一个 OpenSSL 项目。在使用EVP下的加解密功能时。EVP_Decrypt_Final 没有显示错误,但在每个 OP_SIZE 之后,解密文件中都会有 8 个字节的额外数据。我与其他各种用户一起使用了 stackoverflow 中给出的程序,但错误是相同的。
请帮忙 :)
openssl - OpenSSL EVP_CIPHER 免费/发布
我找不到像EVP_CIPHER_free
in那样的任何方法openssl/evp.h
。我不需要释放 EVP_CIPHERs 吗?
haskell - HsOpenSSL 密码结果与 M2Crypto 和命令行不同?
我正在编写一个程序来与另一个用 python 编写的程序交互。我发现加密的结果是不同的。
在 ghci 中,使用 HsOpenSSL,加密结果是\GS\n\197:
在python中,加密的结果是K\x10<Q
在 shell 中,abcd.txt包含字符串“abcd”,abcd.bin在 vim 中显示为K^P<Q}
我假设 M2Crypto 结果等同于命令行结果,为什么 HsOpenSSL 结果不同?
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 之间观察到的)
c - 如何将零填充设置为 EVP_CIPHER?
使用 EVP_CIPHER 时可以设置零填充。
我知道默认填充EVP_EncryptInit_ex
已启用,并且它使用 PKCS 填充。
并且EVP_CIPHER_CTX_set_padding
您只能启用和禁用填充。
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)
成功吗?
谢谢!
c - 使用 C 中的 EVP api 使用 openssl 加密文件的正确方法
我正在尝试做的事情:加密可执行文件,然后再解密。
我的问题是:通过exe正确循环。
这是我的代码目前的样子:
当然有更好的方法来设置密钥和 iv(我正在看这本书网络安全与 openssl)。这不是我的问题,我的问题是我应该如何正确加载一个 exe,并对其进行加密。据我了解,我应该以 rb 模式打开它并阅读它。我不明白我应该使用什么大小的块。我知道我必须在调用 EVP_EncryptUpdate 时输入输入缓冲区和缓冲区长度。我想知道我应该如何阅读输入 exe。我应该遍历文件并每次迭代读取一个 AES_BLOCK_SIZE 吗?实现这一目标的正确方法是什么?