我找到了一个构建哈希值的解决方案:
输出结果为
更新3:选项
更新4:整个脚本如下所示。由于我分配或连接时去掉了空字节,因此它不起作用。
echo -n wicked | shasum | awk '{print $1}'
但是这只适用于字符串输入。我不知道如何处理十六进制的输入,例如如果我想要构建sha1值的sha1值。
更新:我刚刚发现shasum有-b
选项,但它产生了错误的输出。它是否期望字节以相反的字节序传输?
更新2:例如:我进行以下输入:
echo -n 9e38cc8bf3cb7c147302f3e620528002e9dcae82 | shasum -b | awk '{print $1}'
输出结果为
bed846bb1621d915d08eb1df257c2274953b1ad9
,但根据哈希计算器的计算,输出应该为9d371d148d9c13050057105296c32a1368821717
。更新3:选项
-b
似乎完全不起作用。无论我是否使用此参数,都会得到相同的结果。更新4:整个脚本如下所示。由于我分配或连接时去掉了空字节,因此它不起作用。
password="wicked"
scrumble="4d~k|OS7T%YqMkR;pA6("
stage1_hash=$(echo -n $password| shasum | awk '{print $1}')
stage2_hash=$(echo $(echo -n $stage1_hash | xxd -r -p | shasum | awk '{print $1}') | xxd -r -p)
token=$(./xor.sh $(echo -n $scrumble$(echo 9d371d148d9c13050057105296c32a1368821717 | xxd -r -p) | shasum | awk '{print $1}') $stage1_hash)
echo $token
openssl
命令可能会对您有所帮助。请参见 bash 中的 HMAC-SHA1。 - Farvardin