![](/img/trans.png)
[英]AES/CBC/PKCS5Padding vs AES/CBC/PKCS7Padding with 256 key size performance java
[英]Convert Java to PHP: encrypt AES/CBC/PKCS7Padding, key size: 32 bytes, iv: 16 bytes
我正在嘗試將 Java 轉換為 PHP 代碼:加密 AES/CBC/PKCS7Padding,密鑰大小:32 字節。
Java碼
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
String data = "XXX_TEST";
String initVector = "IvHo9h3E2sNvyiT7";
String key = "0k7XHeJkgcI5cHTKblq7lmeM71wlBXQG";
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes(StandardCharsets.UTF_8));
byte[] keyArr = Base64.getDecoder().decode(key.getBytes());
SecretKeySpec sKeySpec = new SecretKeySpec(keyArr, "AES");
cipher.init(Cipher.ENCRYPT_MODE, sKeySpec, iv);
byte[] output = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
String encryptedData = Base64.getEncoder().encodeToString(output);
運行后: encryptedData
將是tY3OYnUgdUMoSlRCcYWLYg==
PHP:
$iv = 'IvHo9h3E2sNvyiT7'; //same with JAVA code(16 bytes)
$key = '0k7XHeJkgcI5cHTKblq7lmeM71wlBXQG';//same with JAVA code(32 bytes)
$encryptedData = openssl_encrypt($data, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
$encryptedData = base64_encode($encryptedData);
運行后: $encryptedData
將是oRSm/Jg/sAsMSgE++Mw5IQ==
問題:如何調整 PHP 代碼以使其具有與 Java 代碼相同的 output 代碼( tY3OYnUgdUMoSlRCcYWLYg==
)?
我正在使用 php8.1
主要問題是,您對密鑰執行 Base64 解碼。 只需使用字節:
String data = "XXX_TEST";
String initVector = "IvHo9h3E2sNvyiT7";
String key = "0k7XHeJkgcI5cHTKblq7lmeM71wlBXQG";
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes(StandardCharsets.UTF_8));
byte[] keyArr = key.getBytes();
SecretKeySpec sKeySpec = new SecretKeySpec(keyArr, "AES");
cipher.init(Cipher.ENCRYPT_MODE, sKeySpec, iv);
byte[] output = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
String encryptedData = Base64.getEncoder().encodeToString(output);
System.out.println(encryptedData);
結果為oRSm/Jg/sAsMSgE++Mw5IQ==
。 無法使用 PKCS7Padding 進行嘗試,請自行嘗試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.