2012-05-24 40 views
1

我想對加密數據進行搜索。這意味着每次我加密相同的明文時都需要具有相同的密文。即想一下加密名稱列表,我想在其中找到所有「Kevin」。我現在會加密「Kevin」並在數據庫中搜索加密文本。所有命中將是「凱文」的 - 但仍然只有密碼的人知道。AES/Rijndael:在加密數據上搜索 - 靜態鹽和IV

現在我的問題:如果我一直使用相同的鹽和IV(以獲得上述效果),那麼安全性如何?加密是否仍然安全?或者有沒有其他方法可以搜索加密數據?

+0

你想搜索包含「凱文」的地方,字符串或者你只是想比較完整信息? – CodesInChaos

+0

我想比較完整的信息!在我看來,檢查文本中的「Kevin」是否會是將完全相同:必須構建文本的加密單詞列表。其中最後1:1搜索加密的單詞(「凱文」)應該已經完成​​。或者你知道更聰明的方法嗎? – heinob

回答

2

如果要進行確定性加密,則應使用專爲確定性加密而設計的加密模式 (並且不要修改專爲其他設計而設計的加密模式)。

一種可能性是 RFC 5297中描述的SIV加密模式。

(當然,確定性的加密有其弊端,但在討論這是不是這個問題的一部分。)

+0

您是否知道JavaScript是否有任何實現? – heinob

+0

我不知道任何JavaScript實現。 JavaScript中的加密常常意味着在錯誤的層次上進行加密,因此JavaScript中的加密庫很少見。 – Jack

+0

客戶端的加密是唯一的機會,你必須得到「主機證明託管」。那麼爲什麼「錯誤的層」呢? – heinob