【问题标题】:How can i pad the message in sha family我如何在沙家人中填充消息
【发布时间】:2014-10-22 05:42:00
【问题描述】:

我正在尝试了解 sha 系列中的填充。

填充消息abc61626380000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000018

a=61b=62c=63 我明白了。 18 表示24 in hexabc => 3.8

什么是 8 和全零?

感谢您的回答

【问题讨论】:

  • 我学到了,所以我在分享。我们加 1,所以 8 位 10000000 表示十六进制的 80。和其他零完成填充块到 64 字节。

标签: algorithm hash padding sha


【解决方案1】:

扩展 someWhereElse 的评论。 SHA 填充将消息扩展到下一个块边界。在消息的末尾添加一个 1 位(不是字节),后跟零位,直到从块末尾开始的 64 位。使用块的最后 64 位以二进制形式保存消息的长度。

您的填充块由以下部分组成:

616263 : "abc" - the message text.
8      : "1000" - the 1 bit to start the padding, followed by padding zeros.
0...0  : The rest of the padding zero bits.
0000000000000018 : 64 bit message length, 24 bits in this case.

如果消息在块边界的 65 位内结束,则填充需要包含一个完整的额外块。

【讨论】:

  • 抱歉,还有一个问题。盐呢?这类似于填充吗? @rossum
  • 盐的用途不同。它在哈希之前应用。您不仅对消息进行哈希处理,还对与盐连接的消息进行哈希处理。如果两个人选择相同的密码,那么盐就会不同,因此哈希值也会不同。维基百科上有一篇文章Salt (cryptography)
  • 所以它就像真正的盐。菜肴的味道会因盐的不同而改变。所以哈希会因为不同的盐而改变?我想我明白了。谢谢!顺便说一句,对不起我的英语。这不是我的母语,所以我不能有效地使用。
猜你喜欢
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2017-12-21
  • 2012-11-04
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多