Шифрование значений с использованием AES / CBC / PKCS5Padding (код Java на PHP)

Мне дали пример кода на Java, и я должен написать код на PHP.
Вывод кода PHP не совпадает с приведенным примером вывода Java.
Пример кода Java может быть неполным (это то, что дано в предоставленной нам документации API. Но в сущности он суммирует шаги, которые нам нужно выполнить)

Сообщение для шифрования
4NPMCXGERGXSBI7F9IPM5000004NPMCXGERGXSBI7F9IPM

Код JAVA

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

PHP код, который мы попробовали

    $keyBytes = [];
$reqArrLen = 16;
$secretKey = 'HDFCBANK!@#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;
}
$strtobyt = implode(array_map("chr", $keyBytes));
$enLoan_Amount = AesCipher::encrypt($strtobyt, $eLoan_Amount);
echo $enLoan_Amount;

Пример вывода в Java:
pnehvlPu2gKJXJabR + HbMERdHWnrdc713 / SAsHOFWDQ9kv / eWNFI4IRmYWQ6QcoH

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

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector