Encryption 静脉注射像盐一样有效吗

Encryption 静脉注射像盐一样有效吗,encryption,aes,Encryption,Aes,在AES中,我的理解是salt是使密码短语更安全的东西,它不会被添加到加密文本中。但是IV是用来加密第一个消息块的东西,它将被添加到加密文本中 我有什么错误吗?没有。IV可以防止相同的信息显示相同。这会泄露信息,特别是您多次发送同一消息的事实。我不太明白您的意思,但这里有一个概述 盐用于加密散列,以消除使用破解方法成功的可能性。(彩虹表是密码哈希的反向查找表) IVs用于对较大文件进行加密,以避免类似部分对同一内容进行加密 它们非常相似,但这里有区别 据我所知,盐通常在加密之前或之后添加。这意味

在AES中,我的理解是salt是使密码短语更安全的东西,它不会被添加到加密文本中。但是IV是用来加密第一个消息块的东西,它将被添加到加密文本中


我有什么错误吗?

没有。IV可以防止相同的信息显示相同。这会泄露信息,特别是您多次发送同一消息的事实。

我不太明白您的意思,但这里有一个概述

盐用于加密散列,以消除使用破解方法成功的可能性。(彩虹表是密码哈希的反向查找表)

IVs用于对较大文件进行加密,以避免类似部分对同一内容进行加密

它们非常相似,但这里有区别

据我所知,盐通常在加密之前或之后添加。这意味着加密也在salt上执行

IVs总是与加密结果进行异或运算。之后执行此操作的原因是,只有第一个块使用IV,其余块使用前一个块进行此XORing


这种区别很重要,因为与密码加密形式异或的salt很容易被破坏,IVs设计用于阻止模式识别式攻击,而不是密码文件的字典攻击。

AES本身并不直接使用salt(或者实际上是IV)

当您使用基于密码的加密(PBE)时,您可能会将salt与AES结合使用。在该方案中,人类可记忆密码与salt结合使用来生成AES密钥。salt的使用使得相同的密码并不总是生成相同的密钥;但是,由于接收者必须能够生成正确的密钥,因此salt必须与加密数据一起传输

如果在某些分组密码模式(如CBC)中使用AES,则需要IV。在这种情况下,它用于确保相同密钥下的相同明文数据不总是加密到相同的密文。同样,接收方要求IV正确解密数据,因此它必须与加密数据一起传输


因此,如果您在CBC模式下使用带AES的PBE作为基础密码,则需要发送PBE salt和CBC IV以及加密数据。

要添加到@Guvante answer中,IV专门用于CBC模式(密码块链接模式) 与EBC模式相比,它增加了更多的安全性(如果两个相同的块使用相同的密钥加密,它们会产生相同的密码),IV修复了这一问题

satting更像是一个散列术语,用于对抗彩虹攻击,它并没有使黑客攻击变得不可能,而是使发现相同密码之间的模式变得不可行,因此相同的明文密码不会产生相同的散列。
它们非常相似,但了解每一个的使用和实现非常重要。

如果salt和IV都使用加密数据发送,那么使用它们有什么意义?因为攻击者可以很容易地从数据中获取salt和IV,那么唯一的任务就是获取密码短语,这与不使用salt和IV的方法不同?请再次仔细阅读我的回答。salt的使用使得相同的密码并不总是生成相同的密钥-这意味着,除其他外,攻击者无法脱机为密钥构建密码字典。IV同样可以确保相同的明文不会产生相同的密文——这意味着攻击者无法建立一组密文。这些并不能阻止暴力攻击(你不能这么做)-但它们最大限度地增加了暴力攻击所需的时间/内存,并有效地防止了一些预计算。感谢您的快速响应。我的理解是一个不含盐的密码,IV将类似于方程f(数据)=x(密码短语),带盐的IV将是f(数据)=x+y(盐)+z(IV)。你得到y和z,那么第二个方程将与第一个方程相同。这里有什么我误解的吗?是的,你误解的是第二个等式实际上是
X'(数据、密码短语、salt、IV)
-salt和IV的影响不能分开计算。salt和IV不是多余的吗?如果我在AES CBC模式下使用PBE,我总是使用相同的IV,但我总是使用随机生成的盐,这还不够吗?产生的密码都是唯一的,因为我永远不会对同一明文加密两次。我在这里遗漏了什么?在同一明文上两个不同的IVs将产生两个不同的密码,就像两个不同的盐也会产生一样。我认为你没有很好地回答这个问题。