Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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
使用AES/CBC/PKCS5Padding(PHP的Java代码)进行值加密_Java_Php_Aes - Fatal编程技术网

使用AES/CBC/PKCS5Padding(PHP的Java代码)进行值加密

使用AES/CBC/PKCS5Padding(PHP的Java代码)进行值加密,java,php,aes,Java,Php,Aes,我已经得到了Java的示例代码,我必须用PHP编写代码。 PHP代码的输出与给定的Java示例输出不匹配。 示例Java代码可能不完整(它是提供给我们的API文档中给出的。但本质上它总结了我们需要完成的步骤) 要加密的消息是 4NPMCXGERGXSBI7F9IPM5000004NPMCXGERGXSBI7F9IPM JAVA代码 import javax.crypto.Cipher;</br> import javax.crypto.spec.SecretKeySpec;</

我已经得到了Java的示例代码,我必须用PHP编写代码。 PHP代码的输出与给定的Java示例输出不匹配。 示例Java代码可能不完整(它是提供给我们的API文档中给出的。但本质上它总结了我们需要完成的步骤)

要加密的消息是 4NPMCXGERGXSBI7F9IPM5000004NPMCXGERGXSBI7F9IPM

JAVA代码

import javax.crypto.Cipher;</br>
import javax.crypto.spec.SecretKeySpec;</br>
import javax.crypto.spec.IvParameterSpec;</br>
import io.fabric.sdk.android.services.network.HttpRequest;</br>
class AAAA{  // class can have any name</br>
public static String getEncryptedTextFor(String text)</br>
    throws Exception {</br>
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");</br>
    byte[] keyBytes = new byte[16];</br>
    String key = "YASHSHAH!@#987MOBAPP";</br>
    byte[] b = key.getBytes("UTF-8");</br>
    int len = b.length;</br>
    if (len > keyBytes.length) len = keyBytes.length;</br>
    System.arraycopy(b, 0, keyBytes, 0, len);</br>
    SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");</br>
    IvParameterSpec ivSpec = new IvParameterSpec(keyBytes);</br>
    cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);</br>
    byte[] results = cipher.doFinal(text.getBytes("UTF-8"));</br>
    return HttpRequest.Base64.encodeBytes(results);</br>
    }</br>
    }</br>
PHP输出示例:

2438bf468c0142c82127d1dd740f53c3c19125f724265d58811322b50027a876a05b35f61a767fced426597d09f592f3


PHP输出长度为128,而Java为64。

PHP代码中没有生成任何输出。因此不可能与java中的相同。php代码中的输出是$enLoan_amount您不是base64编码php输出(您的问题中没有显示php输出)php输出是base64编码的。即使我写base64encode($enLoan_Amount),输出也和上面打印的一样。。我没有编写php输出,因为它与Java示例完全不匹配。@Erwin添加了示例php输出您没有在php代码中生成任何输出。因此不可能与java中的相同。php代码中的输出是$enLoan_amount您不是base64编码php输出(您的问题中没有显示php输出)php输出是base64编码的。即使我写base64encode($enLoan_Amount),输出也和上面打印的一样。。我没有编写php输出,因为它与Java示例完全不匹配。@Erwin添加了示例php输出
    $keyBytes = [];  
    $reqArrLen = 16;  
    $secretKey = 'YASHSHAH!@#987MOBAPP';  
    $a = utf8_encode($secretKey);  
    $b = unpack('C*', $a);   
    $len = count($b);  
    if($len > $reqArrLen){
    $len = $reqArrLen;
    }
    foreach ($b as $key => $value) {
    if($key <= $len)
    $keyBytes[]=$value;
    }
    echo '<pre>';
    $strtobyt = implode(array_map("chr", $keyBytes));
    $enLoan_Amount = AesCipher::encrypt($strtobyt, $eLoan_Amount);
I'm not able to get this output format after executing PHP code.