我有一个简单的bash脚本,它使用base64对字符串进行编码/解码。脚本是:
#!/bin/bash
echo "encode or decode ?"
read input
if [ "$input" == "encode" ]
then
echo Please, enter your secret message
read message
echo "The cipher representing your message is"
echo -n $message | openssl enc -base64
else
echo "Please enter your cipher"
read cipher
echo "Your secret message is"
echo $cipher | openssl enc -base64 -d
echo ""
fi
只要被编码的字符串的长度最多为49个字符,脚本就可以正常工作。超过49个字符的字符串无法正确解码。知道我的脚本可能有什么问题吗?
非常感谢!
答案 0 :(得分:4)
openssl enc -base64
在64个字符的编码字符串后插入一个回车符。这实际上发生在要编码的字符串的第49个字符上。
要避免编码字符串中的此换行符,请在-A
命令中使用选项openssl
一次编码或解码整个字符串:
echo -n $message | openssl enc -base64 -A
和
echo $cipher | openssl enc -base64 -d -A
这看起来特定于openssl
。如果您使用coreutils包中的base64
可执行文件,这也可以。