密钥粗略地说相当于密码;您使用它来加密消息,然后同样的密钥用于将其解密回原始纯文本。(好吧,一旦您拥有公钥和私钥等内容,情况会变得更加复杂。) 盐最常见于密码哈希函数而非加密函数。其想法是,不只是对数据(例如密码)进行哈希,而是对数据+盐进行哈希,其中盐通常是随机生成的字符串。它们至少有两个目的: 防止攻击者通过访问哈希数据识别出冲突并使用彩虹表。 使试图进行暴力攻击的攻击者放慢速度。
关键字实际上就是你用来锁定原始内容的密码。为了使密码更难以逆向工程,您可以向生成的加密中添加盐。举个明显简单的例子,假设您想要加密一个字符字符串。您的加密例程是将单词反转。 因此,对于字符串“Hello,World”,在运行加密后,您的字符串将变为“dlroW,olleH”。 然后,您可以向其添加盐。在此示例中,盐值是“foo”,因此盐化后的结果将为“dlroW,olleHfoo”。 现在,如果有人成功地逆向工程了您的加密算法,则会得到“oofHello World”,这不是原始消息,因此您的信息仍然安全!当您进行迭代加密时,这确实非常有用,例如: result = salt + encrypt(salt+encrypt(salt+encrypt(message)))。