如果您不只是简单地
Exception将
encrypt()例程中的可能内容吞噬掉,那么您将对发生的事情有了更好的了解。如果函数正在返回,
null那么显然发生了异常,您需要知道它是什么。
实际上,例外是:
javax.crypto.IllegalBlockSizeException: Input length not multiple of 16 bytes at com.sun.crypto.provider.CipherCore.finalNoPadding(CipherCore.java:854) at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:828) at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:676) at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:313) at javax.crypto.Cipher.doFinal(Cipher.java:2087) at Encryption.encrypt(Encryption.java:20) at Encryption.main(Encryption.java:6)
可以肯定的是,您的纯文本长度只有11个Java字符,按照您的默认编码,它将为11个字节。
您需要检查PHP
mcrypt_encrypt函数的实际作用。由于它有效,因此显然使用了一些填充方案。您需要找出它是哪一个,并在Java代码中使用它。
好的-我查找了手册页
mcrypt_encrypt。它说:
将使用给定的密码和模式加密的数据。如果数据大小
n * blocksize不足,数据将被填充


