Я попытался перенести свое шифрование из mcrypt в openssl, но дешифрование продолжает сбой. Код Ниже приведена моя функция шифрования. Я поместил var_dump в функцию шифрования, чтобы проверить дешифрование с использованием идентичных переменных, чего нет.openssl_decrypt всегда возвращает false
Я попытался следующие изменения в коде, никто не работал:
base64_decode($encrypted)
- просто из любопытства
base64_encode($encrypted)
- все эти варианты с опциями, установленными на: 0 (значение по умолчанию), OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING
function encryptString($data){
$key = "1A534";
do{
$iv = random_bytes(100);
}while(strpos($iv,"|Z|")!==false);
$encrypted = openssl_encrypt($data,"aes-256-gcm",$key,false,$iv);
var_dump(openssl_decrypt($encrypted,"aes-256-gcm",$key,OPENSSL_RAW_DATA,$iv));
$output = $iv . "|Z|" . $encrypted;
$output = base64_encode($output);
return $output;
}
PHP версии 7.0.5-1 + deb.sury.org ~ испытанный + 1
OpenSSL версии OpenSSL 1.0.2g 1 марта 2016
Почему держит openssl_decrypt возвращение ложным? Я успешно зашифрован с теми же переменными, что и строка выше.
Я думаю, что это не сработает до PHP 7.1, потому что есть ошибка с тегом аутентификации. –
Правильно. Никакие шифры GCM не работают правильно. – Us3r
Я использую 7.1 в этом сценарии, но все равно получаю ложное значение, возвращаемое во всех сценариях. – Dockstar