2013-08-03 40 views
0

通常情況下,有人想要存儲和加密數據,以後只有他可以使用(可讀)數據。但是我想在我的MySQL數據庫中加密(普通和二進制(BLOB))數據,這樣有人直接訪問數據庫就無法讀取這些數據。但在這種情況下,所有註冊用戶都應該能夠爲所有其他用戶插入(加密)數據,反之亦然,所有註冊用戶都應該能夠讀取(解密)由他人插入和加密的數據。爲多個用戶加密/解密數據庫中的內容

所以,我的問題的關鍵是如何建立在MySQL數據庫上面的Web應用程序的用戶將共享相同的密鑰加密/解密數據在分貝?每個用戶必須能夠加密其他人可以解密的數據。

回答

0

這個問題有點抽象,也許我會錯過一些重要的點,但...

至於我自己,我只想加密/在應用程序級解密。所以從數據庫角度來看,加密數據只是TEXTBLOG列,具體取決於加密算法的輸出。


的其他選項是使用MySQL standard encryption functions對數據進行加密而存儲它們和對它們進行解密,同時訪問。由於未加密的數據將通過網絡傳入/傳出數據庫服務器,因此我不太喜歡該解決方案。


這可能很明顯,但請記住,您將無法搜索或對加密數據進行排序。

+0

嗨Sylvain,我的問題的關鍵是如何建立在MySQL數據庫上的Web應用程序的用戶將共享相同的密鑰加密/解密數據在分貝?每個用戶必須能夠加密其他人可以解密的數據。 – sbrbot

+0

@sbrbot正如我試圖解釋,從我的角度來看,這可能是一個應用程序級別的問題。不是數據庫問題。您的應用程序會在將數據發送到數據庫之前對其進行編碼,並在從數據庫中讀取數據時將其解碼... –

+0

...如何做到這一點取決於您的特定加密算法和/或安全要求。如果您使用簡單的共享密鑰加密,加密密鑰可以簡單地存儲在應用程序的配置文件*中。甚至被硬編碼進去。如果您需要更復雜的東西,您可以向用戶詢問加密密鑰。或者您可能依靠用戶提供的證書來獲取密鑰。或者使用公鑰基礎設施。這一切都取決於*您的*特定需求。 –