Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java和PHP之间加密/解密字符串_Java_Php_Android_Encryption_Aes - Fatal编程技术网

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

在Java和PHP之间加密/解密字符串,java,php,android,encryption,aes,Java,Php,Android,Encryption,Aes,我使用AES加密来加密和解密服务器端的php和Android应用程序(作为客户端)之间的字符串 PHP中的加密字符串是: HaxRKnMxT24kCJWUXaVvqDHahzurJQK+sYA4lIHql/U= 在Java中,它是: HaxRKnMxT24kCJWUXaVvqD/KMEkJTPTXEcCsHIYGX9TGtCNOHQcJyUURPk8qlgf3 我在PHP脚本中使用phpseclib来进行加密 我错过了什么 这里是相关的Java代码 SecretKeySpec skeySpe

我使用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));

为了使加密/解密能够跨不同的语言工作,几乎没有什么东西需要相同

  • 加密算法(duh!)
  • 钥匙(又是哑巴!)
  • 关键尺寸
  • 操作模式(ECB、CBC、CTR)
  • 初始化向量(如果是CBC,则不需要ECB)
  • 填充方案

    也许还有更多的因素


  • 你确定这两种语言的所有这些都是相同的吗?如果是,那么您的加密/解密应该能够完美地工作,除非实现中存在bug(这非常罕见,但也有可能)。

    在Java-PHP之间进行加密/解密时存在填充问题。查看此链接-@ManishSharma:噢,谢谢你提到填充!:)