在 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
根据错误,您的副本openssl
未编译或链接到大文件支持。fopen
可能是因为它在打开文件后尝试发现文件的大小并失败而失败。
那么,诀窍就是openssl
从管道中读取数据并将其写入管道。管道没有尺寸,并且fopen
知道这一点,所以应该没问题。管道另一端的东西不需要做任何花哨的事情,它们只需要成为openssl
实际文件之间的直通过滤器即可。这正是cat
工作的意义。cat
,现在成为直接暴露于大文件的东西,需要有大文件支持,但作为操作系统提供的基本实用程序,我们假设它确实如此。
cat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc