我需要一个登录系统来检查用户密码。 我知道salting的密码,但我应该存储盐和加密的密码,或者我应该只存储加密的密码,盐在我的应用程序配置文件中的某个地方?存储加密密码和salt或仅存储加密密码?
如果有一些请亲们,谢谢!
我需要一个登录系统来检查用户密码。 我知道salting的密码,但我应该存储盐和加密的密码,或者我应该只存储加密的密码,盐在我的应用程序配置文件中的某个地方?存储加密密码和salt或仅存储加密密码?
如果有一些请亲们,谢谢!
这取决于你如何使用盐进行加密...
如果盐不会频繁改变:
我将盐一起存储在安全的位置的主密钥。将它与每个密码一起存储只会构成大量冗余数据。此外,数据库可能不如主密钥的存储位置那样安全。请注意,盐可能是密码安全的重要组成部分。 (根据lenght和密码的实力选择由用户...)
如果盐变化频繁,即每加密的口令:
在这种情况下,您需要存储盐的数量巨大。由于一种盐仅用于解密一个密码,所以它不像上述示例那样重要,将它与密码一起存储在数据库中也是可以的。无论如何,将盐存储在应用程序配置中可能会变得混乱。 (除非你会创建一个特殊的盐数据库或类似的东西。)
如果您对每个密码都有不同的盐,那么您将不得不将盐和哈希密码存储在数据库本身中。如果你只使用一个salt来存储所有密码,那么你可以将它们存储在其他位置的配置文件中。
加密是可逆的。我想你的意思是散列函数是不可逆的。 – Gumbo 2010-09-14 10:19:19
是的,谢谢! – funkycottleti 2010-09-14 11:01:59