bash script 中如何传入 openssl 弹出提示输入的密码

#!/bin/bash
code="mykey!"
file="a.txt"
jmfile=${file%.txt}-jm.txt
echo "encypt $file to $jmfile\n"
openssl sm4 -e -in $file -out $jmfile -iter 5 -rand  /dev/urandom <<END
$code
$code
END

想自动输入口令,可是不行,还是提示要手动输入口令

用文件:

-pass file:文件

或者用 echo:

echo "someGoodPassword" | openssl sm4 -e -in $file -out $jmfile -iter 5 -rand  /dev/urandom

你要搞清楚之所以弹出 prompt 是为了往 stdin 里灌东西,那你用 openssl 本身或 bash pipeline 机制都可以。

直接写脚本里是往 stdout/stderr 里灌东西

#!/bin/bash
code="mykey!"
file="1.txt"
jmfile=${file%.txt}-jm.txt
echo "encypt $file to $jmfile\n"
openssl sm4 -e -in $file -out $jmfile -iter 5 -rand /dev/urandom -pass stdin <<END
$code
$code
END

openssl sm4 -help 查到有 -pass 选项,成功了!

1赞

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。