我有一个在 shell 脚本中的命令:
echo -n $2 | openssl rsautl -encrypt -pubin -inkey $1
其中 $2
代表一个字符串参数,$1
是要使用的公钥。
我希望输出是等效的 base64 字符串,但是在命令结尾加上 | base64
看起来不起作用 (可能是因为加密输出中包含空字符并且截断了 base64 输入)。
是否可以在不创建密文中间文件的情况下完成 base64 编码?
例如,我希望将
echo -n "asdf" | openssl rsautl -encrypt -pubin -inkey key.pub.pem
输出类似于
stWslUhRRCk/bZveABLG7fA8z9ZkYc+lBBd5QhvyGNwuI2T5v2sk8aJL3X3Xerrogsu35Wk5O839..........
而不是二进制不可读字符。
openssl rsautl -encrypt -pubin -inkey $1
的输出有空字符吗?你能给我们展示一些样本值吗? - Inian\0
,当bash将其写入变量或向base64
写入时,会被解释为空终止符。我会尽力澄清上述内容。 - user2565010