2013-06-24 56 views
12

我正在嘗試使用Java進行TripleDES加密。從Wikipedia article下的Keying Options,我想用選項1,其中All three keys are independentDESede和TripleDES之間的區別cipher.getInstance()

Cipher docs它說去reference guide here,但它仍然不清楚。

我的工作越來越運行的實例,並在不同的項目中使用這兩種線路:

Cipher c = Cipher.getInstance("DESede"); 

Cipher cipher = Cipher.getInstance("TripleDES/ECB/PKCS5Padding"); 

編譯都很好,所以有什麼區別?我應該使用一個嗎?這兩個工作是否使用三個單獨的密鑰?

回答

22

「TripleDES」只是Sun JCE提供程序中「DESede」的別名 - 兩者都返回完全相同的密碼。 「DESede」是應該適用於每個Java平臺的標準名稱,但實際上,「TripleDES」也可能得到相當廣泛的支持。

根據this page,該了SunJCE三重DES實現支持選項#1和#2:

密鑰大小必須等於112或者168

112甲密鑰大小將生成三重DES密鑰帶有2箇中間密鑰,密鑰大小爲168的密鑰將生成帶有3箇中間密鑰的Triple DES密鑰。

在實例化密碼以使您的意圖清晰時,您應始終指定操作模式和填充。否則,實現可以自由地做出選擇,這可能會令人困惑。