2012-07-24 32 views
2

我想在服務器上的數據庫中存儲一些密碼。在數據庫中存儲密碼的首選可恢復方法

密碼應該是可恢復的,因爲我想將它們用於需要密碼的第三方api。 (所以我不能使用像md5這樣的單向方法......)

什麼是在數據庫中保存密碼的最佳方法?沒有比存儲純文本更好的方法嗎?

+0

您可以加密它們,但這隻會將問題轉移到存儲主密鑰。 – CodesInChaos 2012-07-24 17:04:44

+0

並將主密鑰放在另一個數據庫上,以避免SQL注入攻擊,也許? – 2012-07-24 17:05:21

+0

md5是一種破損的單向方法...僅用於記錄。 – 2012-07-24 17:05:26

回答

2

AES是密碼合理的,可能是爲新應用程序選擇的最常見的加密(而不是哈希)機制。

注意爲您加密的每個密碼生成一個隨機初始化向量(IV),並將密鑰和IV分別存儲在加密密碼字節中。

瞭解AES和Rijndael算法之間的差異退房

http://blogs.msdn.com/b/shawnfa/archive/2006/10/09/the-differences-between-rijndael-and-aes.aspx

有與官方FIPS-197規範AES

您應使用唯一的Rijndael之間存在一些差異IV每個用戶。但是,存儲每個用戶的密鑰會導致一個複雜的密鑰管理場景。我會建議一個關鍵的應用程序和一個IV用戶。

IV可以和密文一起保存。密鑰應該存儲在數據庫之外。

您可以將加密的密鑰存儲在web.config中。見this

+0

我應該爲每個用戶使用一個唯一的密鑰和IV嗎? – 2012-07-24 17:09:55

+0

您應該爲每個用戶使用一個獨特的IV。但是,存儲每個用戶的密鑰會導致一個複雜的密鑰管理場景。我會建議一個關鍵的應用程序和一個IV用戶。 – 2012-07-24 17:11:11

+0

與密文分開存儲IV是不尋常的。將IV添加到密文是標準的。 – CodesInChaos 2012-07-24 17:11:58