2012-01-02 56 views
6

我想存儲在數據庫中加密的配置文件細節。但是,一些細節應該是唯一的,並且由於加密算法隨機化每次加密的種子,因此無法確定該值是否已存儲在數據庫中。如何比較隨機種子的加密字符串?

  • 我可以循環遍歷每一行並解密必要的列,但如果行數很大,這將花費太長時間。
  • 我可以存儲這些(未加密的)細節的散列值,但是這將首先終止加密點

那麼,如何比較一個加密的字符串(隨機種子)與其他人保存在數據庫中?

任何幫助,高度讚賞。加密是使用php(MCRYPT_RIJNDAEL_256/NOFB),數據庫是MySQL。

編輯/解決方案:除了加密值之外,存儲數據散列似乎是我最好的解決方案。這使得驗證獨特的列對我來說足夠簡單。感謝大家離開他們的評論/答覆。

+0

有趣的問題,雖然我不認爲有一個答案超越「將它們未加密地存儲在單獨的列中」......但我們將看到 – 2012-01-02 09:46:47

+1

我會使用與用戶相關的鹽的哈希,如他們的用戶名這樣,如果一個用戶的配置文件字段是已知的,則不能推導出在該字段中具有相同的非哈希值的另一個用戶,因爲它們的散列值將會不同。 – halfer 2012-01-02 09:52:52

+0

@Pekka是的,我們來看看...... – Alasjo 2012-01-02 09:54:13

回答

3

你選擇了一種算法,它不提供你現在說你需要的功能。你需要在之前制定你的要求你選擇一種算法。

+1

那麼,改變算法還不算太晚,有什麼建議嗎? – Alasjo 2012-01-02 10:06:13

+1

要麼爲每個密碼使用相同的種子,要麼使用兩個單獨的跟蹤方案,一個用於捕獲重複項(不跟蹤哪個用戶擁有密碼!),另一個用於驗證(確實如此)。 – 2012-01-02 10:17:48

+0

這個問題不是關於密碼,但我看到需要一個單獨的數據集進行比較。謝謝。 – Alasjo 2012-01-02 10:22:22