關於DES加密中的 DESede/CBC/PKCS5Padding

來源:互聯網
上載者:User

標籤:

今天看到一段3DES密碼編譯演算法的代碼,用的參數是DESede/CBC/PKCS5Padding,感覺比較陌生,於是學習了一下。

 

遇到的java代碼如下:

Cipher cipher=Cipher.getInstance("DESede/CBC/PKCS5Padding");

 

以前寫的代碼,給的參數都是DES或DESede。實際上DESede是簡寫,它與DESede/ECB/PKCS5Padding等價。這個參數分為三段。

- 第一段是密碼編譯演算法的名稱,如DESede實際上是3-DES。這一段還可以放其它的對稱式加密演算法,如Blowfish等。

 

- 第二段是區塊編碼器的模式,除了CBC和ECB之外,還可以是NONE/CFB/QFB等。最常用的就是CBC和ECB了。DES採用區塊編碼器的方式,將明文按8位元組(64位)分組分別加密。如果每個組獨立處理,則是ECB。CBC的處理方式是先用初始向量IV對第一組加密,再用第一組的密文作為金鑰組第二組加密,然後依次完成整個加密操作。如果明文中有兩個分組的內容相同,ECB會得到完全一樣的密文,但CBC則不會。

 

- 第三段是指最後一個分組的填充方式。大部分情況下,明文並非剛好64位的倍數。對於最後一個分組,如果長度小於64位,則需要用資料填充至64位。PKCS5Padding是常用的填充方式,如果沒有指定,預設的方式就是它。

 

補充一點,雖然DES的有效密鑰長度是56位,但要求密鑰長度是64位(8位元組)。3DES則要求24位元組。

 

 

C#

有時候java加密的內容用C#解密不了,一般原因都是設定的參數不正確。C#擷取的TripleDES對象必需設定Mode和Padding兩個屬性。Mode和Padding是枚舉類型。Mode有對應的ECB和CBC對應的枚舉值,但Padding的PKCS5Padding需要對應PKCS7。

 

範例程式碼

TripleDES d = TripleDES.Create();

d.Mode = CipherMode.CBC;

d.Padding = PaddingMode.PKCS7;

 

關於DES加密中的 DESede/CBC/PKCS5Padding

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.