在shell中使用哈希密码(sha512)会破坏该行.如何在一行中获得结果?
散列脚本:
password="abc123"
hashPassw="$(/bin/echo -n "${password}" | openssl dgst -binary -sha512 | openssl enc -base64)"
echo "${hashPassw}"
Run Code Online (Sandbox Code Playgroud)
输出是(为什么打破了这条线?):
xwtd2ev7b1HQnUEytxcMnSB1CnhS8AaA9lZY8DEOgQBW5nY8NMmgCw6UAHb1RJXB
afwjAszrMSA5JxxDRpUH3A==
Run Code Online (Sandbox Code Playgroud)
应该是一行:
xwtd2ev7b1HQnUEytxcMnSB1CnhS8AaA9lZY8DEOgQBW5nY8NMmgCw6UAHb1RJXBafwjAszrMSA5JxxDRpUH3A==
Run Code Online (Sandbox Code Playgroud)
为什么你认为它应该是一行?Base64 确实会换行。
如果您坚持,您的问题可以归结为“SHA512 SSL Base64 随便什么”到“如何删除换行符”,对此有很多方法,
tr -d '\n'
Run Code Online (Sandbox Code Playgroud)
只是其中之一。
来自OpenSSL Wiki for enc.
为了抑制这种情况,除-base64外还可以使用-A标志.这将生成一个完全没有换行符的文件.
所以添加额外的-A标志就可以了.
password="abc123"
hashPassw="$(/bin/echo -n "${password}" | openssl dgst -binary -sha512 | openssl enc -A -base64)"
echo "${hashPassw}"
Run Code Online (Sandbox Code Playgroud)
哪个输出
xwtd2ev7b1HQnUEytxcMnSB1CnhS8AaA9lZY8DEOgQBW5nY8NMmgCw6UAHb1RJXBafwjAszrMSA5JxxDRpUH3A==
Run Code Online (Sandbox Code Playgroud)