openssl rsautl 输出到 base64
Openssl rsautl output to base64
我在 shell 脚本中有这个命令
echo -n | openssl rsautl -encrypt -pubin -inkey
其中 </code> 代表字符串参数,<code>
是要使用的 public 键。
我希望输出是二进制加密的等效base64字符串,但在命令末尾添加| base64
似乎不起作用(可能是因为加密输出包含空字符和剪切base64 输入短。
是否可以在不首先创建密文中间文件转储数据的情况下完成base64编码?
例如,我想
echo -n "asdf" | openssl rsautl -encrypt -pubin -inkey key.pub.pem
输出类似
的内容
stWslUhRRCk/bZveABLG7fA8z9ZkYc+lBBd5QhvyGNwuI2T5v2sk8aJL3X3Xerrogsu35Wk5O839..........
而不是二进制不可读字符,无需创建中间文件(为简洁起见,我截断了输出)
首先,我必须声明我无法重现您的问题,这可能取决于 bash 版本。
我知道有两种方法可以将 openssl rsautl
的输出传递给 base64,而不用管道 stdout 和使用文件。
Bash 进程替换
Bash 能够直接将操作的输出传递给某个命令,而程序认为它正在将输出写入文件。
echo "foo"|openssl rsautl -encrypt -pubin -inkey key -out >(base64)
命名管道
您可以创建一个 命名管道 使用 mkfifo
命令然后使用它,就好像它是一个文件一样。
mkfifo /tmp/mypipe
echo "foo" | openssl rsautl -encrypt -pubin -inkey key -out /tmp/mypipe &
base64 /tmp/mypipe
rm /tmp/mypipe
echo "foo" | openssl rsautl -encrypt -inkey rsa_key.pub -pubin | openssl base64
openssl base64 将二进制加密代码作为输入并生成人类可读格式的 base64。
我在 shell 脚本中有这个命令
echo -n | openssl rsautl -encrypt -pubin -inkey
其中 </code> 代表字符串参数,<code>
是要使用的 public 键。
我希望输出是二进制加密的等效base64字符串,但在命令末尾添加| base64
似乎不起作用(可能是因为加密输出包含空字符和剪切base64 输入短。
是否可以在不首先创建密文中间文件转储数据的情况下完成base64编码?
例如,我想
echo -n "asdf" | openssl rsautl -encrypt -pubin -inkey key.pub.pem
输出类似
的内容stWslUhRRCk/bZveABLG7fA8z9ZkYc+lBBd5QhvyGNwuI2T5v2sk8aJL3X3Xerrogsu35Wk5O839..........
而不是二进制不可读字符,无需创建中间文件(为简洁起见,我截断了输出)
首先,我必须声明我无法重现您的问题,这可能取决于 bash 版本。
我知道有两种方法可以将 openssl rsautl
的输出传递给 base64,而不用管道 stdout 和使用文件。
Bash 进程替换
Bash 能够直接将操作的输出传递给某个命令,而程序认为它正在将输出写入文件。
echo "foo"|openssl rsautl -encrypt -pubin -inkey key -out >(base64)
命名管道
您可以创建一个 命名管道 使用 mkfifo
命令然后使用它,就好像它是一个文件一样。
mkfifo /tmp/mypipe
echo "foo" | openssl rsautl -encrypt -pubin -inkey key -out /tmp/mypipe &
base64 /tmp/mypipe
rm /tmp/mypipe
echo "foo" | openssl rsautl -encrypt -inkey rsa_key.pub -pubin | openssl base64
openssl base64 将二进制加密代码作为输入并生成人类可读格式的 base64。