@mrzgt

Почему срабатывает проверка в openssl?

Шифрую и расшифровываю данные при помощи openssl_

Не могу понять в чем проблема, сгенерированный ключ ввожу для проверки, все работает,но заметил если в ключе изменить одно значение(не во всех местах),то все равно проверка проходит

if(isset($_POST['url']))
{
$input = trim($_POST['url'], '/');
if (!preg_match('#^http(s)?://#', $input)) {
$input = 'http://' . $input;
}
$urlParts = parse_url($input);
$domain = preg_replace('/^www\./', '', $urlParts['host']);
$plaintext = serialize($domain);
$key = "myverystrongpasswordo32bitleng";
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
$hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
$encoded = base64_encode( $iv.$hmac.$ciphertext_raw );
}


$url = str_replace('www.','', $_SERVER['SERVER_NAME']);
$key = "myverystrongpasswordo32bitleng";
//php AES-128-CBC Dec Example
$c = base64_decode($value);
$ivlen = openssl_cipher_iv_length($cipher="aes-128-cbc");
$iv = substr($c, 0, $ivlen);
$hmac = substr($c, $ivlen, $sha2len=32);
$ciphertext_raw2 = substr($c, $ivlen+$sha2len);
$original_plaintext = openssl_decrypt($ciphertext_raw2, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
$original_plaintext = unserialize($original_plaintext);
return $original_plaintext == $url;


К примеру в полученном ключе
xP7dvKKTuZJHgNTBtQTIuINmcMVEAkIaG/nb0+Mw9IhJgMRAT1Rl6s5RP6od/UZc/aet+dp4djhGdTT2HOSO5cY/AO2+i/0VfIfMJd9/m74=

третий символ меняем с 7 на 8 и проверка почему то срабатывает и ключ подходит
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Алгоритмика Москва
от 110 000 до 160 000 руб.
Лучшие люди Иваново
от 40 000 до 90 000 руб.
N1.RU Новосибирск
от 100 000 руб.
17 сент. 2019, в 20:46
952 руб./в час
17 сент. 2019, в 20:41
10000 руб./за проект
17 сент. 2019, в 20:30
700 руб./в час