-a
Openssl 可以使用or-base64
开关在同一步骤中进行 base64 解码和解密。但是 openssl 的 base64 处理存在一个错误,它期望在 base64 编码数据的末尾有一个换行符。
最简单的解决方案是base64 --decode
在解密之前。
例如,考虑这个 base64 加密输出:
# echo foo | openssl enc -aes256 -md sha512 -pass pass:pass -e -base64
U2FsdGVkX182tdJx07S5YoPzi9XhyONdR8Xbc6V1jiw=
如果这是用换行符发送的,它工作正常。但如果没有,它就会失败。
# echo 'U2FsdGVkX182tdJx07S5YoPzi9XhyONdR8Xbc6V1jiw=' | openssl enc -aes256 -md sha512 -pass pass:pass -d -base64
foo
# echo -n 'U2FsdGVkX182tdJx07S5YoPzi9XhyONdR8Xbc6V1jiw=' | openssl enc -aes256 -md sha512 -pass pass:pass -d -base64
error reading input file
您可以使用 cat 插入换行符,或者先使用另一个实用程序解码 base64:
# echo -n 'U2FsdGVkX182tdJx07S5YoPzi9XhyONdR8Xbc6V1jiw=' | cat - <(echo "") | openssl enc -aes256 -md sha512 -pass pass:pass -d -base64
foo
# echo -n 'U2FsdGVkX182tdJx07S5YoPzi9XhyONdR8Xbc6V1jiw=' | base64 --decode | openssl enc -aes256 -md sha512 -pass pass:pass -d
foo