Java和PHP之间的加密/解密字符串

我正在使用AES加密来加密和解密服务器端的php和Android应用程序(作为客户端)之间的字符串。

PHP中的加密字符串是:

HaxRKnMxT24kCJWUXaVvqDHahzurJQK+sYA4lIHql/U= 

在Java中它是:

 HaxRKnMxT24kCJWUXaVvqD/KMEkJTPTXEcCsHIYGX9TGtCNOHQcJyUURPk8qlgf3 

我在PHP脚本中使用phpseclib来进行加密。

我在这里想念的是什么?

这里有相关的Java代码

 SecretKeySpec skeySpec = new SecretKeySpec(pad16(pass), "AES"); Cipher c = Cipher.getInstance("AES"); c.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] out = c.doFinal( input ) 

这里的PHP代码:

 $aes = new Crypt_AES(); $aes->setKey('password'); $encrypted_encoded_text = base64_encode($aes->encrypt($plaintext)); 

为了使加密/解密能够跨不同语言工作,很少有东西需要相同。

  1. 加密算法(呃!)
  2. 钥匙(呃,再次!)
  3. 密钥大小
  4. 运作模式(ECB,CBC,CTR)
  5. 初始化向量(如果是CBC,则不需要ECB)
  6. 填充方案

    也许还有一些因素……

你确定这两种语言都是一样的吗? 如果是,那么您的加密/解密应该完美无缺,除非实施中存在错误(这是非常罕见但可能的)。