天天看点

Php AES加密、解密与Java互操作的问题

内部邀请码:C8E245J (不写邀请码,没有现金送)

国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

)里可以成功进行解密。而在Php加密后的字符串无法在Java中成功解密。

   1.Java中AES加密与解密默认使用AES/ECB/PKCS5Padding模式;

   2.php中的AES算法实现使用AES/ECB/NoPadding

要注意特定的Padding实现跟算法的blockSize有关,这里php的blocksize是16。在php的aes加密前先对源字符串进行Padding,问题得到解决。

前面提到Java默认的AES加密在php 的上述aes实现中可以成功解密。其实该php解密虽然看上去是成功的,其实里面还是有些问题的。因为解密出来的字符串因为Java端加密时会padding操作,php解密以后padding的字符没有被去掉导致会出现问题。因此解密时需要removePaddingStr才能得到原始的字符串。