应用websocket示例时,为什么sha1sum会输出不同的结果?
背景: 我正在学习websockets并尝试实现一个最小服务器。应用websocket示例时,为什么sha1sum会输出不同的结果?
我的问题: 按照official rfc documentation的字符串"dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
SHA1哈希应该是"b37a4f2cc0624f1690f64606cf385945b2bec4ea"
。 这也是sha1-online打印。
但是在使用该工具SHA1SUM bash作为建议在计算器几次,结果是不同的:
$ echo "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" \ | sha1sum \
| cut -d " " -f 1
05082898ab78f6da9c1ad2587b8012cd0cf52172
我试了一下: 我想这可能是混合的十六进制二进制字符串的一些问题表示法,但使用xxd
来回转换并没有使我更接近正确的解决方案。
openssl dgst -sha1
打印完全相同的结果为这个特殊的输入字符串
我的问题是,是有什么问题我如何使用工具SHA1SUM还是有某种错误的(我使用的版本GNU coreutils 8.21)?
编辑:在某些测试中,我宁愿用一个下面的字符串,但是,显然增加了一个新行过,我不知道
$ sha1sum <<< "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" \ | cut -d " " -f 1
05082898ab78f6da9c1ad2587b8012cd0cf52172
回答:
SHA1哈希字符串“
dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11
”的应该是 “b37a4f2cc0624f1690f64606cf385945b2bec4ea
”
答案是是!
问题是与您的echo
它默认输出新线(\n
)字符的,你可以看到下面的字符串的结尾,
echo "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" | hexdump -c 0000000 d G h l I H N h b X B s Z S B u
0000010 b 2 5 j Z Q = = 2 5 8 E A F A 5
0000020 - E 9 1 4 - 4 7 D A - 9 5 C A -
0000030 C 5 A B 0 D C 8 5 B 1 1 \n
000003d
现在使用-n
标志不打印新行字符,
echo -n "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" | hexdump -c 0000000 d G h l I H N h b X B s Z S B u
0000010 b 2 5 j Z Q = = 2 5 8 E A F A 5
0000020 - E 9 1 4 - 4 7 D A - 9 5 C A -
0000030 C 5 A B 0 D C 8 5 B 1 1
000003c
所以做你的实际的例子一样,
echo -n "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" \ | sha1sum \
| cut -d " " -f 1
b37a4f2cc0624f1690f64606cf385945b2bec4ea
从echo
-n的人
man
页面不输出其后的换行符
这是更好地使用更轻便printf
(见Why printf is better then echo)为此,
printf "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" \ | sha1sum \
| cut -d " " -f 1
b37a4f2cc0624f1690f64606cf385945b2bec4ea
此外,你可以摆脱任何第三方GNU工具,如cut
,对于这一点,只是内置set
处理定位参数输出,
set -- $(printf "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" | sha1sum) printf "%s\n" "$1"
b37a4f2cc0624f1690f64606cf385945b2bec4ea
以上是 应用websocket示例时,为什么sha1sum会输出不同的结果? 的全部内容, 来源链接: utcz.com/qa/263007.html