ASiC ZIP 存档加密期间的奇怪行为

问题描述 投票:0回答:1

我目前正在实现使用 XAdES 容器创建 ASiC-E 的功能,用于存储有关某些文件及其签名的信息(例如 mimetype、file1.xml、META-INF/manifest.xml、META-INF/signatures.xml)

创建容器后,我使用 openssl 命令执行执行加密操作:

openssl cms -encrypt -in container.zip -out encrypted_data.cms -recip certificate.pem -outform PEM -aes-128-cbc

尝试使用解密命令从 CMS 解密信息时:

openssl cms -decrypt -inform PEM -in encrypted_data.cms -out decrypted_output.zip -recip certificate.pem -inkey privateKey.pem

zip 文件显示为空,仅包含表明它是 zip 文件的二进制文件。 关于我做错了什么或者为什么之前 zip 文件的内容没有完全加密或者为什么在解密过程中输出是空 zip 的任何建议?

编辑:问题不是来自扩展,因为

.asice
扩展也有同样的作用。

openssl certificate x509certificate asic xades
1个回答
0
投票

我找到了解决办法。问题是

-binary
标志在执行过程中是必不可少的。 以下是其重要性的更多信息:

当您传递不带 -binary 标志的 ZIP 文件时,OpenSSL 会尝试将输入视为 S/MIME 消息,并可能将二进制数据解释为需要转换。这可能会导致损坏,尤其是在处理 ZIP 存档、图像或任何其他二进制格式等非文本文件时。如果 OpenSSL 将 S/MIME 规范化应用于二进制文件: 它通过修改换行符或以意想不到的方式解释某些字节模式来更改文件内容。 发生元数据损坏是因为 S/MIME 规范化采用文本数据。二进制文件的标头和结构(如 ZIP 标头)需要精确的逐字节保存,而此过程会破坏这一点。

© www.soinside.com 2019 - 2024. All rights reserved.