2016-10-04 44 views
2

我正在加密我的數據庫。我有多列,我想要加密。我使用Java中的AES/ECB/PKCS5Padding密碼。我應該爲每列使用不同的密鑰嗎?

現在,問題是,我應該爲它們中的每一個使用不同的鍵,還是應該爲所有列使用一個鍵?

+1

密鑰存儲在哪裏?如果您選擇使用不同的密鑰進行加密,然後將所有密鑰存儲在同一個地方,那麼您最好只使用一個密鑰進行加密。不要使用ECB,這幾乎是分組密碼的第一個(或第二個)規則。 –

+0

@LukePark,我使用服務器端加密,所以所有的密鑰將在服務器中可用。我應該用什麼來代替歐洲央行? – uksz

+0

然後在所有的加密中沒有多少意義。加密密鑰旁邊存儲的加密數據對於所有密集的目的都只是明文。如果可以的話,你應該使用GCM。如果沒有,請使用CBC並使用HMAC進行身份驗證。 –

回答

3

使用盡可能多的密鑰,因爲存在需要訪問該數據的交叉角色。

如果一個表(用於多用戶密碼管理器)是這樣的:

  • 用戶名
  • 密碼

那麼你的系統應該能夠提供一個密鑰來解密用戶名,但只有用戶應該能夠提供解密密碼的密鑰。對於那個schenario你需要2個鍵。

使這變得複雜;如果系統,用戶和可能的其他用戶都能夠提供密鑰來解密密碼,那麼你需要在兩個或更多不同的列中輸入密碼,這可能會(在技術上並非如此)導致你無法解決的情況有3NF數據庫設計。

+3

除了密碼永遠不會被解密,因爲它會被散列並且沒有加密。或者至少應該是。 –

+1

@LukePark我有一個密碼管理器,用戶必須能夠撤回密碼。對於登錄網站場景,您的評論是正確的。我編輯了我的回覆以反映這一點,謝謝你指出這一點! –

相關問題