我需要一個登錄系統來檢查用戶密碼。 我知道salting的密碼,但我應該存儲鹽和加密的密碼,或者我應該只存儲加密的密碼,鹽在我的應用程序配置文件中的某個地方?存儲加密密碼和salt或僅存儲加密密碼?
如果有一些請親們,謝謝!
我需要一個登錄系統來檢查用戶密碼。 我知道salting的密碼,但我應該存儲鹽和加密的密碼,或者我應該只存儲加密的密碼,鹽在我的應用程序配置文件中的某個地方?存儲加密密碼和salt或僅存儲加密密碼?
如果有一些請親們,謝謝!
這取決於你如何使用鹽進行加密...
如果鹽不會頻繁改變:
我將鹽一起存儲在安全的位置的主密鑰。將它與每個密碼一起存儲只會構成大量冗餘數據。此外,數據庫可能不如主密鑰的存儲位置那樣安全。請注意,鹽可能是密碼安全的重要組成部分。 (根據lenght和密碼的實力選擇由用戶...)
如果鹽變化頻繁,即每加密的口令:
在這種情況下,您需要存儲鹽的數量巨大。由於一種鹽僅用於解密一個密碼,所以它不像上述示例那樣重要,將它與密碼一起存儲在數據庫中也是可以的。無論如何,將鹽存儲在應用程序配置中可能會變得混亂。 (除非你會創建一個特殊的鹽數據庫或類似的東西。)
如果您對每個密碼都有不同的鹽,那麼您將不得不將鹽和哈希密碼存儲在數據庫本身中。如果你只使用一個salt來存儲所有密碼,那麼你可以將它們存儲在其他位置的配置文件中。
加密是可逆的。我想你的意思是散列函數是不可逆的。 – Gumbo 2010-09-14 10:19:19
是的,謝謝! – funkycottleti 2010-09-14 11:01:59