如何使用openssl命令创建大型加密文件


8

在AIX中创建加密文件期间,出现以下错误:

$ openssl enc -aes-256-cbc -salt -in test.img -out test.img.enc 

test.img: Value too large to be stored in data type
14221428:error:0200107F:system library:fopen:Value too large to be stored in:bss_file.c:356:fopen('test.img','r')
14221428:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:358:

test.img文件大小为35GB

相同的命令在Linux中适用于100GB文件。


1
这是AIX随附的openssl,还是您单独安装了它?听起来好像它没有被编译为处理大文件。了解版本可能也会有所帮助:openssl version
杰夫·谢勒

3
如果您使用管道阻止openssl了解有关输入和输出文件大小的信息,是否有帮助?像cat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc
Celada

EHLO。请从显示的输出truss openssl enc -aes-256-cbc -salt -in test.img -out test.img.enc
KWubbufetowicz

谢谢,是的,默认情况下,openssl是AIX附带的-OpenSSL 0.9.8r 2011
Daya

2
您可能会运行到2吉布/ 32位的限制- stackoverflow.com/questions/1746751/...上的一个文件,这只是在2GiB尝试再一个,这只是下- 。
Liczyrzepa '16

Answers:


2

根据错误,您的副本openssl不会被编译或与大文件支持建立链接。fopen可能会失败,因为它尝试在打开文件后立即发现文件的大小而失败。

然后,诀窍是openssl从管道读取并写入管道。管道没有大小,并且fopen知道这一点,因此应该没有问题。管道另一端的东西不需要做任何花哨的事情,它们只需要是openssl和实际文件之间的直通过滤器即可。这就是cat工作。cat,现在变成直接暴露于大文件的东西,需要具有大文件支持,但是作为操作系统提供的基本实用程序,我们假设它可以。

cat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.