我一直在搜索,但仍然不确定“盐”是什么以及如何使用/实现它。对不起这个问题,我是自学php。
我绝对不是专家,但是真正简短的答案是“涂一行”文本意味着在其末尾添加一些额外的字符。您可以将“ salt”和“ abcdefg”加盐以获得“ saltabcdefg”。如果“盐”恰好是您想要使其更难猜测的密码,则这可能很有用。
通常,密码+盐会通过一些难以逆转的过程转换(“散列”)为完全不同的字符串。然后,将这个转换后的字符串与salt的纯文本一起存储为密码,然后丢弃正确的密码的原始纯文本。当您想检查某人是否输入了正确的密码时,可以将他们键入的内容与密码文件中列出的salt结合起来,然后对结果进行哈希处理。如果结果与您记录的密码哈希匹配,那么您知道它们已经输入了正确的密码。
实施盐的操作很简单,只需选择一个字符串作为盐,然后确保对其进行跟踪即可。但是,您可以随每个密码更改盐,然后必须有一种跟踪密码+盐组合以及生成变体的方法。当然,您可能还希望对密码进行哈希处理,而不是保存密码的纯文本,因此,您必须选择哈希函数。在这一点上,问题已经从适当的解决发展到实施密码安全方案。
对于PHP,您可能想看看某些框架是如何实现的。两个快速链接,分别用于CakePHP和Zend:
http://www.jotlab.com/2010/04/18/cakephp-rainbow-table-protection- behaviour/
http://www.zimuel.it/blog/2009/07/build-a-secure-login-with-zend- framework/