dongxia8656 2019-02-14 07:44
浏览 822

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

I have been given sample code in Java and I have to write a code in PHP. Output of PHP Code is not matching with Java Sample Output given. The sample Java code may not be complete (it is what is given in the API documentation given to us. But in essential it summarizes the steps that we need to complete)

Message to encrypt is 4NPMCXGERGXSBI7F9IPM5000004NPMCXGERGXSBI7F9IPM

JAVA Code

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 Code that we tried

    $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);

Sample Output FORMAT in Java is : (This is not the actual output but format is shared) pnehvlPu2gKJXJabR+HbMERdHWnrdc713/SAsHOFWDQ9kv/eWNFI4IRmYWQ6QcoH

I'm not able to get this output format after executing PHP code.

Sample PHP Output :

2438bf468c0142c82127d1dd740f53c3c19125f724265d58811322b50027a876a05b35f61a767fced426597d09f592f3

PHP output length is 128 whereas Java is in 64.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 高德地图点聚合中Marker的位置无法实时更新
    • ¥15 DIFY API Endpoint 问题。
    • ¥20 sub地址DHCP问题
    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办