2011-04-19 36 views
1

我在哪裏可以獲得PHP的AES加密,並且可以將它用於phpmyadmin?任何參考?我可以在哪裏獲得AES的Encyrption for PHP,並且可以使用AES加密來存儲文件?

我想要加密存儲在db和其他表中的文件。

+1

它真的值得嗎?你在儲存什麼?如果你認爲簡單地在數據庫中加密某些東西會增加任何真正的額外安全性,這是一種錯覺。 – 2011-04-19 23:32:55

+1

我正在爲客戶存儲掃描文檔。 – AAA 2011-04-19 23:45:51

+1

除非你的數據庫憑證是公開的,你認爲這實際上實現了什麼額外的安全性? – 2011-04-20 03:43:30

回答

2

我要你使用MySQL來承擔。

MySQL內置AES加密/解密函數。因此,如果您要加密要存儲在數據庫中的數據,那麼將在SQL命令中處理該數據。

據我所知,PHPMyAdmin不提供用於執行加密字段的GUI。您需要手動輸入命令。例如:

CREATE TABLE `test` (
    `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    `stuff` BLOB NOT NULL DEFAULT "" 
); 
# Encrypted fields have to be of the BLOB type (tiny/medium/large variants okay) 

INSERT INTO test (stuff) VALUES (AES_ENCRYPT("My hovercraft is full of eels!", "password")); 

SELECT AES_DECRYPT(stuff, "password") AS stuff FROM test; 

需要注意的是,如果你在你的數據庫加密的東西,你還是應該用在連接SSL(客戶端的Web服務器和Web服務器到數據庫服務器)來保護數據,同時它在過境。

現在,在PHP方面,如果您需要在PHP端執行加密/解密,則可以使用AES加密/解密功能。如果你想將這些集成到PHPMyAdmin中,那就意味着修改程序的源代碼,並假定提交一個補丁。但我沒有看到這一點。

+1

謝謝。我實際上是爲客戶存儲重要文件。基本上我們的服務器是安全的,我們有各種阻止入侵的東西,並且我們有保護措施。是的,我們確實有SSL。但我想採取額外的步驟來加密數據「靜止」(數據庫條目+文檔),以便如果有人訪問它,它仍然需要解密,從而使它很難或不可能。鑑於我剛纔提到的這個解決方案是否有意義?再次感謝! – AAA 2011-04-19 23:47:43

+0

@AAA:這取決於。您實際上可以將文檔存儲在數據庫本身中(在一個大的blob字段中);請注意,這種方法可能會導致性能問題。另外,請確保MySQL配置爲接受足夠大的傳入文件的SQL命令。但基本上,Dagon最重要的一點是:如果加密數據和密碼在同一臺服務器上,那麼攻擊者可以輕鬆解密數據。所以你需要一些方法來保持密碼和數據的分離,這很棘手。最後,請注意,如果您以某種方式丟失了密碼,那麼您的數據可能會消失。 – 2011-04-22 06:12:59