Я получил другой результат, когда попытался переместить функцию mcrypt_encrypt openssl_encrypt в AES.
function encrypt3($data, $secret){
//Generate a key from a hash
$key = md5(utf8_encode($secret), true);
//Pad for PKCS7
$blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$len = strlen($data);
$pad = $blockSize - ($len % $blockSize);
$data .= str_repeat(chr($pad), $pad);
//Encrypt data MCRYPT_RIJNDAEL_128, ECB equal to C# AES
$encData = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB);
return base64_encode($encData);
}
function en_test($data,$cipher_method,$secret_key,$iv){
$secret_key = md5(utf8_encode($secret_key), true);
$result = openssl_encrypt($data, $cipher_method, $secret_key, OPENSSL_RAW_DATA, 0);
return base64_encode($result);
}
$result = openssl_encrypt($data, "AES-128-CBC", $secret_key, OPENSSL_RAW_DATA, 0);
в mcrypt_encrypt нет IV прохода, я стараюсь не передавать IV в open_ssl, но получаю ошибки, IV передаетсядлиной всего 1 байт, шифр ожидает, что IV, равное 16 байтам, в примере кода .net должно передать значение $ iv.
любая помощь будет оценена.
спасибо