好吧,所以我试着在我的java应用程序中学习加密消息。我刚刚发现SALT和KEY不一样。
有人可以帮我理解两者之间的区别吗?
答案 0 :(得分:16)
密钥粗略地相当于密码;您使用它来加密消息,然后使用相同的密钥将其解密回原始明文。 (好吧,一旦你有公钥和私钥,它会变得更复杂一些,等等。)
salt 最常见于加密哈希功能,而不是加密功能。我们的想法是,不是散列数据(例如密码),而是散列数据+ salt,其中salt通常是随机生成的字符串。他们(至少)有两个目的:
答案 1 :(得分:3)
键本质上是用于锁定原始内容的密码。
要使密码更难以进行逆向工程,可以在生成的加密中添加 salt 。
<小时/> 举一个明显简单的例子,假设你要加密一个字符串。你的加密程序是颠倒这个词。 因此,对于字符串“Hello,World”,运行加密后,您的字符串将为“dlroW,olleH”。 然后你可以添加盐。在这个例子中,盐将是“foo”,因此盐析后的结果将是“dlroW,olleHfoo”。 现在,如果有人设法对您的加密算法进行逆向工程,他们就会得到“oofHello World”,这不是原始信息,因此您的信息仍然是安全的!
当你迭代加密时,这真的开始使用,例如,
result = salt + encrypt(salt + encrypt(salt + encrypt(message)))。