内存缓冲例程:BUF_MEM_grow_clean:malloc同时解密大于1.5 GB的文件

时间:2017-10-05 10:47:05

标签: encryption openssl

我有一个备份,压缩和加密MySQL转储的基本脚本:

mysqldump --events --routines --triggers --add-drop-database \
  --compress --hex-blob --opt --skip-comments --single-transaction \
  my-database | \
  xc -c | \
  /usr/bin/openssl smime \
  -encrypt \
  -aes256 \
  -binary \
  -out /mnt/test.sql.xz.enc \
  -outform DER /path/to/cert.pem

要加密,基本上使用此命令:

openssl smime -encrypt -aes256 -binary -out test.sql.xz.enc -outform DER cert.pem

要正常解密我使用:

openssl smime -decrypt -in test.sql.xz.enc -binary -inform DEM -inkey private.key -out sql.xz

在此过程中,这两种方式一直在加密和解密,但现在压缩后的数据已达到 1.5GB ,而解密时我收到此错误:

Error reading S/MIME message      
34380825992:error:07069041:memory buffer 
routines:BUF_MEM_grow_clean:malloc failure:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/buffer/buffer.c:150:
34380825992:error:0D06B041:asn1 encoding routines:ASN1_D2I_READ_BIO:malloc failure:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/asn1/a_d2i_fp.c:239:

我已将文件移至biger实例(4核,8GB内存)但仍有问题。

因此,想知道在使用smime选项加密时是否存在大小限制,以及可以使用哪些选项来加密/解密大小为千兆字节的文件。

目前,我正在使用选项-stream进行测试似乎正在运行:

openssl smime -encrypt -aes256 -stream -binary -out test.sql.xz.enc -outform DER cert.pem

但不知道会有什么限制,所以任何可能的替代方案或想法都非常受欢迎。

0 个答案:

没有答案