openssl aes gcm 加密,带身份验证 TAG;命令行

2023-12-22

我正在尝试使用 'openssl' th/ 命令行以 AES-GCM 模式加密文件

openssl enc -aes-256-gcm -p -iv 000000000000000000000000 -K 00000000000000000000000000000000000000000000000000000000000000 -nosalt -in file.raw -out file.enc`

加密有效,但我找不到检索生成的 GCM 标签的方法。有办法得到吗?

在本文档中(link https://ensiwiki.ensimag.fr/images/b/b3/Cheat.pdf)我发现“请注意,现在甚至可以使用 CCM 或 GCM 等身份验证模式”,但仍然没有任何信息如何做到这一点。

或者是否有其他标准的 macOS 工具可以完成相同的工作?


PS:我很感兴趣通过通用分布式命令行工具来做到这一点,这不是编写自己的实用程序的问题


注意:正如用户 dave_thompson_085 在下面指出的那样,答案其余部分的结果与当前版本的 OpenSSL 无关。我不小心使用了 LibreSSLopenssl。阅读当前版本OpenSSL 文档enc tool https://www.openssl.org/docs/man1.1.0/apps/openssl-enc.html,它包含以下句子

enc 程序不支持经过身份验证的加密模式,例如 CCM 和 GCM。该实用程序不存储或检索身份验证 标签。

我想这回答了您的问题 - 取决于您使用的 OpenSSL 版本。


原始答案,通过 LibreSSL 获得opensslmacOS 附带:

使用时,GCM 标记不会存储在输出文件中openssl enc应用程序。您可以从下面的一行字中看到这一点:

$ echo -n 'abcdefghijklmnop' | openssl enc -aes-256-gcm -K 0 -iv 0  | hexdump -C
00000000  af c5 23 59 28 06 0c 06  6e 24 ae bf d7 9d f2 68  |..#Y(...n$.....h|
00000010

输出的大小与输入的大小完全相同,任何地方都没有标签字节。

您还可以通过检查实现来看到它enc.c https://github.com/openssl/openssl/blob/OpenSSL_1_0_2n/apps/enc.c#L648。它不做任何事EVP_CIPHER_CTX_ctrl()调用来处理 GCM 标签,如中所述有关 EVP 验证加密和解密的 OpenSSL Wiki 页面 https://wiki.openssl.org/index.php/EVP_Authenticated_Encryption_and_Decryption。换句话说,标签数据丢失了。

解密时使用aes-256-gcm,该工具本身也会忽略标签的缺失。一个消息bad decrypt被发射到stderr但这似乎来自与应用程序不同的层,应用程序愉快地打印结果:

$ echo -n 'abcdefghijklmnop' | openssl enc -aes-256-gcm -K 0 -iv 0  | openssl enc -aes-256-gcm -K 0 -iv 0 -d
bad decrypt
abcdefghijklmnop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openssl aes gcm 加密,带身份验证 TAG;命令行 的相关文章

  • 在提交到 Mac App Store 的应用程序中调用 openssl 是否可以接受?

    我有点不清楚调用提交到 App Store 的应用程序之外的进程的规则是什么 我读到 如果您想使用 Cocoa 和 OSX 库之外的其他库 框架 您必须将其包含在您的应用程序中 例如 如果使用 QT Python 或 Ruby 编写应用程序
  • clojure 有 AES 库吗?

    clojure 有 AES 加密库吗 我应该使用通过 maven 或 clojars 提供的 java 库吗 感谢您的时间和考虑 下面是一个使用可用的 java 加密库的可能更惯用的示例 encrypt and decrypt这里每个都简单
  • Mysql加密/存储敏感数据,

    我的 PHP 网站有以下内容 启用 SSL 饼干 session set cookie params cookieParams lifetime cookieParams path cookieParams domain secure ht
  • PHP MCRYPT 加密/解密返回不可见的奇怪字符?

    mcrypt decrypt给了我额外的不可见字符 这些字符通过在页面上回显是不可见的 只能通过将其写入文本文件来查看 也就是说 只显示在页面上就可以了 而且很难被注意到 这是谷歌搜索的代码示例 请指导我正确的用法是什么 有什么问题吗 fu
  • 如何加密捆绑的文本/json 文件?

    我的 iOS 应用程序捆绑了几个文件 现在 如果有人下载该应用程序并访问 ipa 文件 他就可以轻松阅读它们 我想让事情变得更难 您知道有关该主题的任何资源吗 我想我需要一个加密库 以及编码文件的构建脚本中的一些脚本 当然 我知道有人可能会
  • “未知 ca”,具有自行生成的 CA、证书和客户端/服务器

    我正在编写一个自定义客户端和服务器 我想通过公共互联网安全地进行通信 因此我想使用 OpenSSL 并让两端进行对等验证 以确保我的客户端不会被 MITM 误导 同样未经授权的客户端无法连接到服务器 这是在 SSL connect SSL
  • 使用公钥时出现 InvalidKeySpecException

    我正在拼命尝试在 Android 上使用非对称公钥 私钥加密技术来加密消息 我在 Windows 上 使用 puttygen 生成了公钥和私钥 我不确定它有什么区别 但我选择了 SSH 2 RSA 这是公钥 AAAAB3NzaC1yc2EA
  • 适用于 .NET 的 32 位分组密码

    我需要加密 32 位整数 以便它们由 32 位整数表示 是否可以使用 32 位块大小的块密码 以便输出为 32 位 我目前正在使用 DES 但结果是 64 位整数 我不想使用 XOR 加密作为最后的手段 Skip32 这是一个基于鲣鱼算法
  • 为什么我的代码不能根据字典解码加密字符串?

    我有一本字典 其中包含代表字母的键和值 例如一个简单的 DICT CODE b g n a p o x d t y 我收到了一个加密代码 并将该字符串转换为一个列表 其中每个项目都是一个单词 我需要根据字典中的项目来解决它 代码示例是 wo
  • 将包含所有证书链的 P7b 文件导出到 CER 文件中

    我有 Thwate 提供的 p7b 文件 当我尝试使用以下命令导出 cer 文件中的证书时 不包括证书链 请建议如何做同样的事情 导入到 weblogic 密钥存储中需要此 CER openssl pkcs7 print certs in
  • 将 PHP mcrypt 与 Rijndael/AES 结合使用

    我正在尝试使用 php 中的 mcrypt 和密码 Rijndael 加密一些文本消息 但我不确定 MCRYPT MODE modename 根据 PHP 手册 这些可用 ecb cbc cfb ofb nofb 或 stream 但我读到
  • 如何读取密钥文件以与 HMAC_Init_ex() 一起使用

    我使用 openssl 生成了 RSA 私钥 我需要使用纯 C 语言中的 OpenSSL 库的 HMAC 函数来对数据进行哈希 签名 但我不确定如何从该文件中正确提取私钥数据 据我所知 该文件是 B64 编码的 因此我将其取消编码并将其存储
  • 如何使用 Libsodium-PHP 加密/解密 AES

    我需要用 PHP 加密 解密数据 我对此完全陌生 但是我读到 Libsodium PHP 是 AES 加密的最佳工具 就像我研究过的其他 PHP 加密库一样 Libsoduim PHP 似乎几乎没有提供如何使用该库的文档 我能够找到 任何有
  • 如何从 PHP 的 sha256 加密迁移到 bcrypt?

    登录 rows sql gt fetch PDO FETCH ASSOC us id rows id us pass rows password us salt rows password salt status rows attempt
  • 在 React Native 和 Expo 中加密敏感数据

    我正在使用 React Native 开发一个移动应用程序Expo https expo io 提供安全解决方案 项目所有者希望在应用程序中存储敏感的授权密钥 用于与 REST 服务器通信并访问安全数据 他要求这些密钥至少是加密的 并且尽可
  • Silverlight:加密Web服务的用户名和密码

    加密不是我的强项 我正在 Silverlight 3 中编写一个应用程序 它与 Web 服务通信以对用户进行身份验证 Web 服务不一定在 SSL 下托管 我正在尝试找到一种在传递用户名和密码之前对其进行可逆加密的方法 该方法不依赖于将密钥
  • 如何使用 python-gnupg 加密大型数据集而不占用所有内存?

    我的磁盘上有一个非常大的文本文件 假设它是 1 GB 或更多 还假设该文件中的数据有 n每 120 个字符一个字符 我在用python gnupg https pythonhosted org python gnupg 对此文件进行加密 由
  • 使用 PHP 针对远程证书进行 Windows 应用商店 IAP 签名验证

    我正在尝试验证 Windows 应用商店应用程序的 PHP 中的 IAP 收据 基本上 尝试将此示例代码转换为 PHPhttp msdn microsoft com en us library windows apps jj649137 a
  • 线程“main”中的异常 java.security.UnrecoverableKeyException:给定的最终块未正确填充

    大家好 我使用 AES 进行加密 我所做的是在文本文件中加密数据并存储给定位置 如果在同一个类文件中给出 解密工作正常 我创建了一个不同的 java 类来解密该文件 我使用带有用户名和密码的 Javakeystore 来存储密钥并检索它并使
  • 如何对JConsole的密码文件的密码进行加密

    我正在使用 JConsole 访问我的应用程序 MBean 并使用 password properties 文件 但根据 Sun 的规范 该文件仅包含明文格式的密码 com sun management jmxremote password

随机推荐