首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SHA-3填充材料

SHA-3填充材料
EN

Cryptography用户
提问于 2020-06-26 15:53:04
回答 2查看 445关注 0票数 1

沙-3使用填充,所以原始消息有一定的长度。

在SHA-3-512的情况下,每个块的大小为576,因此任何消息都必须进行填充,以便它是块大小576的倍数。

我知道填充是通过公式来完成的。

p(m)=P10*1

其中P是预定的位字符串,*是占位符,其中插入的数量为0,这样就满足了条件。

现在出现了一个问题:当我们想要将575位的信息放入算法中时,会发生什么?显然,我们比所需的长度少了1位,填充规则至少有3位长。在这种情况下会发生什么?

EN

回答 2

Cryptography用户

发布于 2020-06-26 15:55:56

当我们想要将575位的消息放入算法中时,会发生什么呢?显然,我们比所需的长度少了1位,填充规则至少有3位长。在这种情况下会发生什么?

在这种情况下,我们只是扩展填充直到它到达下一个多重-576边界;在这种情况下,这意味着填充是577位长(并跨越块边界)。

票数 4
EN

Cryptography用户

发布于 2020-06-26 20:27:05

FIPS 202中定义填充。多速率填充:

填充规则pad10*1,其输出是1,后面是(可能为空的) 0s字符串,后面是1。填充规则pad是生成填充的函数,即具有适当长度的字符串以附加到另一个字符串。通常,给定一个正整数x和一个非负整数m,输出pad(x, m)是一个字符串,该字符串的属性是m + len(pad(x, m))x的正倍数。在海绵结构中,x = rm = len(N),这样就可以将填充的输入字符串划分成一个r-bit字符串序列。

其中r是块大小或速率。r可以由r = 1600 - 2\cdot r计算。

下面的算法是SHA3的填充算法,内部确定所需的零点数。

算法9: pad10 10*1(x,m)

  • 输入:正整数x;非负整数m.
  • 输出:字符串P,因此m + len(P)x的正倍数。
  • 步骤:
    1. j = (– m – 2) \bmod x
    2. 返回P = 1 \mathbin\| 0^j \mathbin\| 1

  • 具有575位大小的消息;

当我们想要将575位的消息放入算法中时,会发生什么呢?显然,我们比所需的长度少了1位,填充规则至少有3位长。在这种情况下会发生什么?

用575 (pad10 10*1(576,575) )调用算法pad10 10*1(x,m ),然后j = (-575 -2) \bmod 576 =575,使0's的数目为575。

填充的消息是m\mathbin\|1\,\underbrace{00\ldots00}_{575-zeroes}\,1

填充的总大小为577,这需要一个额外的块,因为r=576

票数 0
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/81562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档