SALT和KEY之间的区别。加密

时间:2011-09-05 01:47:07

标签: java encryption key salt

好吧,所以我试着在我的java应用程序中学习加密消息。我刚刚发现SALT和KEY不一样。

有人可以帮我理解两者之间的区别吗?

2 个答案:

答案 0 :(得分:16)

密钥粗略地相当于密码;您使用它来加密消息,然后使用相同的密钥将其解密回原始明文。 (好吧,一旦你有公钥和私钥,它会变得更复杂一些,等等。)

salt 最常见于加密哈希功能,而不是加密功能。我们的想法是,不是散列数据(例如密码),而是散列数据+ salt,其中salt通常是随机生成的字符串。他们(至少)有两个目的:

  • 使用collision阻止有权访问散列数据的攻击者识别rainbow table
  • 减慢正在尝试暴力攻击的攻击者。

答案 1 :(得分:3)

本质上是用于锁定原始内容的密码。

要使密码更难以进行逆向工程,可以在生成的加密中添加 salt

<小时/> 举一个明显简单的例子,假设你要加密一个字符串。你的加密程序是颠倒这个词。 因此,对于字符串“Hello,World”,运行加密后,您的字符串将为“dlroW,olleH”。 然后你可以添加盐。在这个例子中,盐将是“foo”,因此盐析后的结果将是“dlroW,olleHfoo”。 现在,如果有人设法对您的加密算法进行逆向工程,他们就会得到“oofHello World”,这不是原始信息,因此您的信息仍然是安全的!

当你迭代加密时,这真的开始使用,例如,
result = salt + encrypt(salt + encrypt(salt + encrypt(message)))。