關於PHP與Java AES加解密互連的Padding問題

來源:互聯網
上載者:User

首先,通常情況下Java內部支援三種填充:NoPadding,PKCS5Padding(預設),ISO10126Padding。

如果選用NoPadding的話,對於資料長度不滿16位元組整數倍的情況下,Java是會報錯的。

PHP貌似是使用NoPadding填充,但實際上對於上述情況PHP內部是會以“\0”來填充,其實是一種Zero填充。

表現在Java中,則是由Bouncy Castle實現的ZeroBytePadding。

由於這種填充方式的簡易性,完全手動實現也非常方便,還不用依賴其他包。

最後,針對Java有幾個需要留意的地方:

手動實現“\0”填充有問題的話,可以嘗試改用空格填充,解碼後別忘了trim掉就行了;

通常情況下預設只支援128bit的AES;

最最後,別忘了cipher.doFinal()方法返回的資料是二進位流,用於傳輸的話推薦直接對二進位的密文做base64編碼(PHP同理),別再轉十六進位字串了,忒TM長了~

參考資料:

http://blog.chinaunix.net/uid-196845-id-2788287.html

http://blog.csdn.net/kongqz/article/details/6287257

http://zhiwei.li/text/2010/11/aes%E5%8A%A0%E5%AF%86php%E4%B8%8Ejava%E4%BB%A5%E5%8F%8Apython%E7%9A%84%E4%BA%92%E6%93%8D%E4%BD%9C/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.