在ColdFusion 9(非企业版)中使用的最安全的哈希算法是什么?
根据CF documentation,这些是选项:
MD5:(默认)生成一个32个字符的十六进制字符串,使用 MD5算法(ColdFusion MX和之前使用的算法) 版本)。
SHA:使用安全哈希标准生成一个40个字符的字符串 国家标准与标准协会规定的SHA-1算法 技术(NIST)FIPS-180-2。
SHA-256:使用SHA-256算法生成44个字符的字符串 由FIPS-180-2规定。
SHA-384:使用SHA-384算法生成64个字符的字符串 由FIPS-180-2规定。
SHA-512:使用SHA-1算法生成128个字符的字符串 由FIPS-180-2规定。
但在this article中,它表示不使用MD5或SHA-1
我对cf文档也有点怀疑。它说编码“SHA-512”使用SHA-1,但企业版“SHA-512”的描述是“由FIPS 180-2和FIPS 198定义的512位安全散列算法”。 SHA-512的输出大于SHA-384。对不起,我很难理解所有这些不同的编码原则。
答案 0 :(得分:3)
哈希本身并不安全,任何可以进行哈希处理的东西都可以被破坏。所以在安全领域你可能会想,好吧我需要多次运行哈希来更多地模糊它,但这并不能保护信息,它只是意味着有人必须重复同一个进程并多次迭代哈希。如果他们知道你使用的哈希算法并假设他们这样做,那就不安全了。除非您尝试保护信息,否则Sha-256应该足以用于散列信息。哈希永远不应该被用来保护信息。仅仅因为它不是人类可读的并不能使其安全。
如果你想保护某些东西,请使用coldfusion加密功能,并确保使用像AES这样的合适算法,因为coldfusion中的默认值是不安全的。然后,您需要使用您正在保护的信息中的一些熵数据,以确保您拥有一个难以猜测或找到的唯一加密密钥。不要在代码中对单个密钥进行硬编码,这样可以让人们轻松地在所有加密中查找和使用模式。
使用像bcrypt或scyrpt这样的东西来存储密码。我知道他们需要投入更多的工作,并且需要在coldfusion中进行java集成,但它们是更安全的存储信息的方式。请记住,即使使用bcrypt或scrypt,如果有足够的时间和有人愿意付出努力来解密信息,信息也会受到损害。确保信息安全时要偏执。