olehs писал(а): в данном случае делает то же самое, что и
Код: Выделить всё
$data = str_pad($data, 16, chr(0), STR_PAD_RIGHT);
Так что это ни на что не должно влиять.
Пока только мысли в слух:
Вот сейчас только что попробовал у себя на 7.0.25 этот код:
Код: Выделить всё
$data = 'hello';
$key = implode(array_map("chr", array(0x09, 0x76, 0x28, 0x34, 0x3f, 0xe9, 0x9e, 0x23, 0x76, 0x5c, 0x15, 0x13, 0xac, 0xcf, 0x8b, 0x02)));
$iv = implode(array_map("chr", array(0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58)));
$data_pad = str_pad($data, 16, chr(0), STR_PAD_RIGHT);
$result_1 = base64_encode(openssl_encrypt($data_pad, 'AES-128-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv));
$result_2 = base64_encode(openssl_encrypt($data_pad, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv));
$result_3 = base64_encode(openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv));
$result_4 = base64_encode(openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv));
$result_5 = base64_encode(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv));
echo "1:".$result_1."<br>2:".$result_2."<br>3:".$result_3."<br>4:".$result_4."<br>5:".$result_5."<br>";
Выводит совершенно разные результаты, причем $result_5 - какбы эталонный с которым все работало до некоторого времени и ни один с ним не совпал, странно все это:
1:0xvj8lfXyQZT8g6H8MGMUw==
2:0xvj8lfXyQZT8g6H8MGMU5GZer23vVPF7F24LCfdbVI=
3:
4:E3m4kfM5ld8sG9UMIpe2uA==
5:0EdmLv3oKPs3qJwldEagQw==