问题标签 [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 - OpenSSL EVP_DecryptFinal_ex 在输出缓冲区末尾生成垃圾
我正在使用 openssl 函数解密一些数据,但解密的最终结果存在一些问题。
我按部分解密,首先我需要解密 200 个字节,因为它们包含一些我需要获取和接收这些数据的名称和数据长度。前 200 个字节和其余数据都使用相同的密钥进行加密。然后我获取需要解密以接收完整流的数据量,我成功接收了这些数据,一切都很好,但是在输出缓冲区中,最后总是会留下一些垃圾,例如“somedataend\x14\x14\ x14..." 等,垃圾大小从 14 到 16 字节长度,这是 EVP openssl 函数的正常行为吗?
encryption - Go 等效于 OpenSSL EVP 对称 EVP_aes_256_cbc
我正在编写一个 Go 脚本,它将解密一些用EVP_aes_256_cbc
RSA 公钥加密的遗留数据。
在 C 中,这将类似于:
我在 Go 中有evp_key
和iv
字节数组等价物,但我必须承认 EVP 在 OpenSSL 中的工作顺序让我难以理解(我在 C 语言中相当胜任,但我无法掌握这种解密发生的过程查看 OpenSSL 源代码。)
在 Go 中,我可以做到这一点:
这就是我迷路的地方。我有一个evpKey
和pKey
,但我不知道如何从这里解密数据。OpenSSL 使用RSA_decrypt_old
或类似的东西,但我无法追查这实际上意味着什么。
是否有 Go 等价物,或者我是否需要摆脱过于昂贵的cgo
包裹并卷起袖子?
更新(分辨率):
对于希望在 Go 中复制 EVP 行为或只是想知道 EVP 是如何工作的任何人,以下是细分。如果您知道 C(或 Java 或任何 OpenSSL 实现)正在使用以下内容进行加密:
“印章”实际上只是用 RSA 公钥加密密钥。
在 Go 中解密类似的内容:
ios - 解密数据,在IOS中使用带有openssl evp接口的aes gcm
我有以下用于解密数据的代码:
由于某种原因,代码无法正确解密数据。_sesKey 是正确的,并且在调用 toIV 以强制第一组数据使用正确的 iv 之后,IV 被覆盖,并且解密不需要 AAD 数据。我已经在 android 中完成了这个(使用 bouncycastle 库),所以我知道 _sesKey 和 IV 是正确的。我不知道是否有人可以通过告诉我出了什么问题以及为什么来帮助我。
encryption - 在 openssl 中使用 EVP_aes_128_gcm 用于大小不是 16 的倍数的广告
我正在尝试使用 openssl EVP (EVP_aes_128_gcm) 作为 GMAC 的接口。我正在针对 NIST 的 CAVP GCM 测试向量(http://csrc.nist.gov/groups/STM/cavp/documents/mac/gcmtestvectors.zip)测试代码。问题是:当广告大小是 16 的倍数时,代码可以给出正确的 GMAC 标签。但如果大小不是 16 的倍数,则结果是错误的。可能是什么问题呢?
代码是:
对于测试向量(代码中的注释部分):
输出错误...
对于测试向量:
输出是正确的:
我使用的版本是:OpenSSL 1.0.1 14 Mar 2012
c - 使用 openssl evp aes_256_ctr() 模式加密时生成的无效字符
我的想法是在客户端服务器模型中进行文件加密,我使用 openssl evp 进行加密。我需要将密文存储在文本文件中并将其发送给客户端。但我无法做到这一点,因为我发现密文中存在无法存储在文件中的无效字符。
这是我的加密代码:
我参考了这个链接,其中报告并解决了带有解密的无效字符的问题。
使用 openssl evp api(aes256cbc) 加密文件的问题
我希望有人可以在这里帮助我。
提前致谢。
encryption - 使用 AES_* 函数和 EVP_* 函数进行加密
AES_*
我有一些使用 openssl ( ) 函数加密的数据。我想更新此代码以使用较新的 ( EVP_*
) 函数。但应该能够解密使用旧代码加密的数据。
我已经粘贴在旧代码和新代码下面。加密/解密的内容不同。即我不能互换使用它们。这意味着我无法升级代码而不必使用旧代码解密然后重新加密。
参数是否有任何值,EVP_BytesToKey
以便aes_key
派生在两种情况下都是相同的。或者有没有其他方法可以使用 ( EVP_*
) 函数来完成相同的任务?我尝试了几个不同的值digest
,rounds
并尝试了制作iv NULL
,但并没有真正起作用,即它没有提供与旧方法相同的输出。
使用AES_*
函数的代码
使用EVP_*
函数的代码。(加密代码如下,解密代码类似)。
谢谢
gcc - Debian 上对 EVP_idea_ecb 的未定义引用
我有以下代码:
我知道,这并不多,但它应该毫无怨言地编译,但我明白了
libssl-dev
已安装。任何想法这里出了什么问题?
我的发行版:x64 上的 Debian Jessie。
c - OpenSSL 中的 ENGINE 是什么,它的用途是什么?
我无法很好地解释ENGINE
OpenSSL 中的内容。它用于诸如EVP_PKEY_CTX_new
.
我正在使用EVP_PKEY_CTX_new
加密/解密之前使用的东西EVP_PKEY_encrypt
,EVP_PKEY_decrypt
但我真的需要ENGINE
在调用时指定参数EVP_PKEY_CTX_new
。我在 OpenSSL 内部的任何地方都将参数指定为 null。
所以我的问题是:ENGINE
OpenSSL 中的内容是什么,它的用途是什么,如果没有指定它有什么区别?
c++ - openssl和linux bash计算之间的MD5不匹配
我在网上找到了这段代码来计算 md5:
我建造了它。
但是,这段代码的结果与Linux bash的md5sum结果不同:
这种差异从何而来?
hash - Digest Init-Update-Final 机制是否会复制输入数据?
我使用init-update-final机制计算哈希,即初始化哈希上下文,然后使用各种大小的输入数据进行哈希更新,最后进行摘要计算。这可以使用OpenSSL 的 EVP_DigestInit、EVP_DigestUpdate 和 EVP_DigestFinal_Ex 函数或Crypto++ 的 Update 和 Final 方法来完成。
从我可以从OpenSSL和Crypto++的源代码中挖掘出来的内容,似乎输入数据实际上被复制和存储了。谁能证实这一点?这是散列过程的限制还是标准程序?这会随着使用的摘要算法而变化吗?
我的印象是散列算法会根据输入数据块计算一些内部状态,最终摘要将根据在所有各种更新调用中收集的内部状态来计算。情况似乎并非如此。显然,我对散列算法的机制还不够了解。