我正试图通过openssl将输出pipe道添加到当前的磁带备份脚本,目前我有:
tar -czpvf /dev/nst0 /home /otherdir
所以joinopenssl给出了这个:
tar czpvf - /home /otherdir | openssl aes-256-cbc -e -salt -pass file:/my_passwd > /dev/nst0
这不会给出任何错误,但是我可以在网上find解密的唯一方法是:
dd if=/dev/nst0 conv=sync | openssl aes-256-cbc -d -salt -pass file:/my_passwd | tar xzpvf -
这给出了正确的文件列表,但我得到:
bad decrypt 8340:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:461:
每次。
我能做些什么来解决这个问题?
我想这可能与使用分组密码有关。
我遇到类似的错误:
$ tar czpvf - /test/directory |openssl aes-256-cbc -e -salt -pass pass:password | dd of=/tmp/foo.encrypted.tgz $ dd if=/tmp/foo.encrypted.tgz conv=sync | openssl aes-256-cbc -d -salt -pass pass:password |tar xzpvf -
但是当我使用rc4等stream密码时,例如:
$ tar czpvf - /test/directory |openssl rc4 -e -salt -pass pass:fred | dd of=/tmp/foo.encrypted.tgz
我没有得到这个错误。
大多数情况下,我看到来自OpenSSL的这种错误信息是由于错误的密码造成的。 你可以暂时尝试如果replacefile:/my_passwd与pass:yourpassword你的pass:yourpassword在解密行继续好吗? 当然,这将是一个不好的永久性解决scheme,但请尝试这一点来进行debugging。
您需要将input填充到分组密码。 尝试用4k的块大小和conv = sync选项pipe道你的焦油到dd。 这将填充数据的结尾。
您最好使用mbuffer写入磁带,因为它可以处理磁带跨越和缓冲(减less擦鞋),并且可以全部写入,以保持磁带驱动器的快乐。 查看这个答案的示例脚本。 mbuffer从stdin读取,所以压缩和encryption不是一个问题,即使跨越多个磁带( tar不能做的东西)。
至于需要sync使用dd ,这是因为磁带驱动器需要写入块。 看到这个答案为什么的详细描述,但简短的答案是,再次使用mbuffer写入固定大小的块(例如,每个256kB)的数据解决了这个问题。