应用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

回到顶部