我正在尝试通过 openssl 管道传输输出,为当前的磁带备份脚本添加加密,目前我有:
tar -czpvf /dev/nst0 /home /otherdir
因此添加 openssl 会出现以下结果:
tar czpvf - /home /otherdir | openssl aes-256-cbc -e -salt -pass file:/my_passwd > /dev/nst0
这不会给出任何错误,但是我在网上找到的唯一解密方法是:
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:
每次。
我该如何修复此问题?
答案1
我认为这可能与使用分组密码有关。
当我这样做时我会得到类似的错误:
$ 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 这样的流密码时,例如:
$ tar czpvf - /test/directory |openssl rc4 -e -salt -pass pass:fred | dd of=/tmp/foo.encrypted.tgz
我没有收到那个错误。
答案2
大多数情况下,我看到 OpenSSL 的这种错误消息是由于密码错误。您可以暂时尝试在解密行中替换为,看看file:/my_passwd
是否pass:yourpassword
成功?当然,这不是一个好的永久解决方案,但可以尝试使用它进行调试。
答案3
您需要填充分组密码的输入。尝试使用块大小 4k 和 conv=sync 选项将您的 tar 传输到 dd。这将填充数据的末尾。