我正在尝试在php和java中创建一个加密示例。但是java和php的加密结果互不相同。
我认为Java的结果是正确的。
我的PHP代码的哪一部分是错误的? 需要您的帮助,谢谢。
这就是我所拥有的
java
public String enrollmentKeyId(String data, String key) {
byte[] keyData = java.util.Base64.getUrlDecoder().decode(key);
SecretKeySpec secureKey = new SecretKeySpec(keyData, "AES");
String result = null;
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secureKey);
byte[] encryptedData = cipher.doFinal(data.getBytes());
result = java.util.Base64.getUrlEncoder().withoutPadding().encodeToString(encryptedData);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
php
$keyData = base64_decode($enrmtKey);
$ivlen = openssl_cipher_iv_length('aes-128-ecb');
$iv = openssl_random_pseudo_bytes($ivlen);
$encryptedData = openssl_encrypt($this->pkcs5Pad($shortUuid, 16), 'aes-128-ecb', $keyData, OPENSSL_RAW_DATA, $iv);
$result = base64_encode($encryptedData);
echo $result;
public function pkcs5Pad($text, $blockSize)
{
$pad = $blockSize - (strlen($text) % $blockSize);
return $text . str_repeat(chr($pad), $pad);
}