首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PBKDF2中INT (i)是有符号的吗?

在PBKDF2中INT (i)是有符号的吗?
EN

Stack Overflow用户
提问于 2017-07-12 13:09:41
回答 2查看 70关注 0票数 0

RFC2898的第11页指出,对于U_1 = PRF (P,S || INT ( i )),INT (i)是整数i的四个八位字节编码,最高有效八位字节在前。

这是否意味着我是一个带符号的值,如果是这样,溢出时会发生什么?

EN

回答 2

Stack Overflow用户

发布于 2017-07-12 23:10:06

没有人说它会被签署。dkLen的上限是(2^32 - 1) * hLen,这表明它是一个无符号整数,不能从0xFFFFFFFF (2^32 - 1)转到0x00000000

当然,在您请求34,359,738,368字节之前,PBKDF2(MD5)不会达到2^31。这是一个可怕的字节数。

SHA-1: 42,949,672,960

  • SHA-2-256 / SHA-3-256: 68,719,476,736

  • SHA-2-384 / SHA-3-384: 103,079,215,104

  • SHA-2-512 / SHA-3-512: 137,438,953,472

/

  • SHA-1: 137,438,953,472

/SHA-3-256:68,719,476,736

  • SHA-2-384/SHA-3-384

由于.NET实现(在Rfc2898DeriveBytes中)是一个迭代流,因此可以通过一系列(长)调用轮询32 be。大多数平台将PBKDF2暴露为一次性操作,因此您需要为它们提供32 an (或更大)的内存范围,以确定它们是否有那么大的错误。因此,即使大多数平台的符号有误...这真的不重要。

PBKDF2是一个密钥派生函数,所以用来派生密钥。AES-256是32字节,或者48字节,如果您使用相同的PBKDF2来生成IV (实际上您不应该这样做)。使用34,093 digit prime为ECC曲线生成私钥是14,157字节(如果我没算错的话)。远远低于32 the大关。

票数 1
EN

Stack Overflow用户

发布于 2017-07-12 23:36:16

i的范围从1到l = CEIL (dkLen / hLen)dkLenhLen是正整数。因此,i是严格正的。

但是,您可以将i存储在有符号的32位整数类型中,而无需任何特殊处理。如果i翻转(从0x7FFFFFFF0xF0000000递增),它将继续正确编码,并继续正确递增。使用二的补码编码,加法、减法和乘法的逐位结果是相同的,只要所有的值都被视为有符号或无符号的。

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

https://stackoverflow.com/questions/45048872

复制
相关文章

相似问题

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