gpt4 book ai didi

带有十六进制输入的 Bash sha1

转载 作者:行者123 更新时间:2023-11-29 09:21:46 25 4
gpt4 key购买 nike

我找到了构建哈希值的解决方案:

echo -n wicked | shasum | awk '{print $1}'

但这只适用于字符串输入。我不知道如何将输入处理为十六进制,例如,如果我想构建 sha1 值的 sha1 值。

upd: 我刚刚发现有选项 -b 用于 shasum,但它会产生错误的输出。它是否期望具有反向字节序的字节?

upd2: 例如:我做如下输入:

echo -n 9e38cc8bf3cb7c147302f3e620528002e9dcae82 | shasum -b | awk '{print $1}'

输出是 bed846bb1621d915d08eb1df257c2274953b1ad9 但根据 hash calculator输出应该是 9d371d148d9c13050057105296c32a1368821717

upd3: -b 选项似乎根本不起作用。是否应用此参数没有区别,我得到相同的结果。

upd4:整个脚本如下所示。它不起作用,因为空字节在我分配或连接时被删除。

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

最佳答案

您可以使用xxd -r -p 将十六进制转换为二进制:

echo -n 9e38cc8bf3cb7c147302f3e620528002e9dcae82 | xxd -r -p | shasum -b | awk '{print $1}'

请注意,此输出为 9d371d148d9c13050057105296c32a1368821717;这与我使用 hash calculator 对 9e38cc8bf3cb7c147302f3e620528002e9dcae82 进行哈希处理得到的结果相匹配.您从 bash 计算器获得的值似乎是复制粘贴错误的结果,特别是在十六进制字符串中遗漏了最后的“2”。

更新:我不确定整个脚本应该做什么,但我可以指出它的几个问题:

  • Shell 变量、命令参数和 C 字符串通常不能包含空字节。在某些情况下,尾随换行符会被修剪,IIRC 一些早期版本的 bash 无法处理删除字符(十六进制 7F)...基本上,不要尝试存储二进制数据(如 stage2_hash 中)或将其作为参数传递(如在 ./xor.sh 中)在 shell 中。另一方面,管道可以很好地传递原始二进制文件。因此,将其存储为十六进制,然后使用 xxd -r -p 将其转换为二进制,并将其直接通过管道传输到目的地。
  • 当您展开一个 shell 变量 ($password) 或使用一个命令替换 ($(somecommand)) 而没有用双引号括起来时,shell 会做一些对其进行额外的解析(比如将空格转换为分词符、将通配符扩展为匹配文件名列表等)。这几乎不是您想要的,因此请始终将诸如变量引用之类的内容用双引号引起来。
  • 不要对任何重要的事情使用 echo 并期望它的行为一致。根据您拥有的 echo 版本和/或密码是什么,echo -n "$password" 可能会打印出没有换行符的密码,或者可能会打印它前面有“-n”,后面有一个换行符,可能会对密码中的任何反斜杠序列做一些事情,或者(如果密码以“-”开头)将密码本身解释为 echo 命令的更多选项。请改用 printf "%s""$password"
  • 不要使用 echo $(somecommand)(甚至 printf "%s""$(somecommand)")。 echo$() 在这里大部分相互抵消,但在两者之间创造了出现问题的机会。直接使用命令即可。

清理它们,如果清理后它不起作用,请尝试发布一个单独的问题。

关于带有十六进制输入的 Bash sha1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23030200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com