【问题标题】:padding algorithm more than 512 bits in sha256sha256中超过512位的填充算法
【发布时间】:2019-03-14 11:51:35
【问题描述】:

如果有人回答我的问题,我将非常感激, 我的问题是在 sha256 中,如果我们有 512 位消息长度,我该如何进行填充,因为在 sha256 l+1+k=448mod512 中,它会溢出 512 位块,我的意思是说,对于散列计算,我们需要除以 512位块分成 16 x 32 个块,过程是消息位长 (l) + k 个 '0' + l 的二进制表示(消息长度)。我的观点是在 k 数字 0f '0' 和 l(消息长度)的位表示之后的 512 位,我们将得到超过 512 位,我们将如何划分为 16 x 32 位块。

【问题讨论】:

  • 你能重新表述一下这个问题吗?向我们展示您的开始和最终想要的结果,以及您试图让您到达那里的问题。事实上,你的问题有点混乱。
  • 我的问题是如果我想加密一条长度为 512 位的消息,如何在处理为 sha256 函数之前进行填充,这需要 16 x 32 位块(32 位 16 次计算) ,为了更清楚地说明,如果我的问题是 512 位消息长度,512 位之后 512 位 + 1 +64 位(对于 lenth 消息),这将给出 1024 位块,如果我分成 32 bis 块,它将给出32 位块,这意味着我得到 32 x 32 位块而不是 16 x 32 位块,我的主要疑问是我是否需要重复 16 x 32 位块进行计算

标签: message sha256 digest


【解决方案1】:

您无需将数据填充到一定长度即可获得 sha256 校验和值;该算法将处理几个字节以及兆字节的数据:

Linux> echo 'hey' |  sha256sum
4e955fea0268518cbaa500409dfbec88f0ecebad28d84ecbe250baed97dba889  -
Linux> echo '' |  sha256sum
01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b  -
Linux> ls -oh L0_2018_08_28_Disk1_8mtbno4o_3_1.bkp 
-rw-r-----. 1 nfsnobody 348M Aug 28 23:48 L0_2018_08_28_Disk1_8mtbno4o_3_1.bkp
Linux> sha256sum L0_2018_08_28_Disk1_8mtbno4o_3_1.bkp
34438a1bc45f613b7be8797b1139aaa66a60d73844f2d7554184b17c621b4576  L0_2018_08_28_Disk1_8mtbno4o_3_1.bkp

如果你想了解实际的算法,open-source implementation 说

算法规范可以在这里找到: http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf

【讨论】:

  • 感谢您的回答和时间,但我试图找出它的功能而不是使用编程语言(我的意思是在纸上)
  • 根据 Linux 手册页,“按照 FIPS-180-2 中的描述计算总和。”尝试谷歌搜索,或获取sha256sum 的源代码。
  • 在我的回答中添加了如何实现它的来源。我认为该文件将回答您的问题;如果是这样,请随时接受我的回答。
猜你喜欢
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多