SALT和KEY之间的区别。加密

2022-09-02 03:54:45

好吧,所以我试图学习一些关于在我的java应用程序中加密消息的知识。我刚刚发现SALT和KEY是不一样的。

有人能帮助我理解两者之间的区别吗?


答案 1

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

最常遇到的是加密哈希函数,而不是加密函数。这个想法是,你不是只散列你的数据(例如密码),而是散列数据+盐,其中盐通常是随机生成的字符串。它们(至少)有两个目的:

  • 阻止有权访问散列数据的攻击者使用彩虹表识别碰撞
  • 减慢正在尝试暴力攻击的攻击者的速度。

答案 2

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

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


举一个明显简单的例子,假设你想加密一个字符串。您的加密例程是反转单词。因此,对于字符串“Hello,World”,在运行加密后,您的字符串将是“dlroW,olleH”。然后你可以加盐。在这个例子中,盐将是“foo”,所以盐腌后的结果将是“dlroW,olleHfoo”。现在,如果有人设法对您的加密算法进行逆向工程,他们会得到“oofHello World”,这不是原始消息,因此您的信息仍然是安全的!

当您迭代加密时,这确实会被使用,例如,
result = salt + encrypt(salt+encrypt(salt+encrypt(message)))。