2009-10-29 63 views
1

根據mysql document編譯MySQL爲256位AES

「編碼具有128位密鑰長度被使用,但可以通過修改所述源延長至256位。」

但他們似乎並沒有提供指導在哪裏改變。任何人都會遇到這種情況?哪個源文件應該改變?

注意:我使用these steps to compile

+1

函數的最大問題是它不是關鍵字長度,而是模式。它使用ECB,所以沒有塊鏈接,也沒有初始向量。它不適合加密敏感數據。例如,相同的密碼將始終生成相同的密文,因此很容易猜測常用的密碼。 – 2009-10-29 11:32:55

+0

你說得對。這是保護應用程序數據的一個非常主要的狀態。 CBC是下一步,即在數據訪問層進行加密/解密。 – Jirapong 2009-10-29 17:21:09

回答

3

我發現一點幫助從MySQL mailing list

文件包括/ my_aes.h

#define AES_KEY_LENGTH 128 /* must be 128 192 or 256 */ 

因爲我使用的openSUSE 11.1需要具備以下工具

sudo zypper install gcc gcc-c++ ncurses-devel 

然後就編譯它由此指令 - here

Credit to LenZ and tripanel.net

+0

我在linux中使用mysql,你能解釋清楚嗎? – Karthik 2013-04-01 10:16:38

0

這可能是一個更易於維護的解決方案,可以在客戶端應用程序中執行加密。此外,您還可以獲得將網絡上的數據加密並且不通過網絡發送密鑰的好處(當然,您也可以使用SSL連接到mysql以緩解此問題)。

如果這看起來不是一個好方法,請發佈您的要求。

你可能不想編譯你自己的mysql二進制文件;與構建自己的mysql二進制文件相比,開發人員可以做更多有用的事情。 MySQL/Sun的經過廣泛測試,不會包含性能迴歸(我們希望)。


MySQL的AES_ENCRYPT()函數也可能並不安全,因爲他們沒有記錄

  • 他們是如何散列密碼進入關鍵
  • 他們使用什麼樣的加密模式

如果它們以易受攻擊的方式完成,加密可能非常弱。這取決於你的使用情況,這是否重要。

+0

要求是在具有AES_ENCRYPT功能的數據庫中使用AES256加密。來自mysql的文檔不是很清楚,但它們在源代碼中記錄得很清楚。我設法解決了這個問題。感謝您的建議。 – Jirapong 2009-10-29 09:13:07