在shell中使用哈希密码(sha512)会破坏该行。 如何在一行中得到结果?
散列脚本:
password="abc123"
hashPassw="$(/bin/echo -n "${password}" | openssl dgst -binary -sha512 | openssl enc -base64)"
echo "${hashPassw}"
输出是(为什么要破坏线?):
xwtd2ev7b1HQnUEytxcMnSB1CnhS8AaA9lZY8DEOgQBW5nY8NMmgCw6UAHb1RJXB
afwjAszrMSA5JxxDRpUH3A==
应该是一行:
xwtd2ev7b1HQnUEytxcMnSB1CnhS8AaA9lZY8DEOgQBW5nY8NMmgCw6UAHb1RJXBafwjAszrMSA5JxxDRpUH3A==
答案 0 :(得分:6)
来自enc
的{{3}}。
为了抑制这种情况,除-base64外还可以使用-A标志。这将生成一个完全没有换行符的文件。
因此添加额外的-A
标志就可以了。
password="abc123"
hashPassw="$(/bin/echo -n "${password}" | openssl dgst -binary -sha512 | openssl enc -A -base64)"
echo "${hashPassw}"
哪个输出
xwtd2ev7b1HQnUEytxcMnSB1CnhS8AaA9lZY8DEOgQBW5nY8NMmgCw6UAHb1RJXBafwjAszrMSA5JxxDRpUH3A==
答案 1 :(得分:3)
为什么你认为它应该是一行? Base64确实换行。
如果你坚持,你的问题可归结为" SHA512 SSL Base64无论什么"到"如何删除新行",有很多方法,
tr -d '\n'
只是其中之一。