Şifremi mcrypt'den openssl'e taşımaya çalıştım ancak şifre çözme başarısız oluyor. Aşağıdaki kod şifreleme işlevimi gösterir. Şifre çözme işleminde, şifreleme işlevinde var_dump'ı yerleştirdim.openssl_decrypt her zaman false değerini döndürür
ben kodu aşağıdaki değişiklikleri çalıştı, hiçbiri çalıştı:
-
sadece
- olarak ayarlanmış seçenekleri ile tüm bu varyantlar merakı
base64_encode($encrypted)
üzerinden base64_decode($encrypted)
- : 0 (varsayılan değer), OPENSSL_RAW_DATA,
OPENSSL_ZERO_PADDING 210
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 Sürümü olduğunu 7.0.5-1 + deb.sury.org ~ güvenilir + 1
OpenSSL Sürüm OpenSSL 1.0.2g 1 Mar 2016
Neden yanlış dönen openssl_decrypt tutar mı? Sadece yukarıdaki satırdaki aynı değişkenlerle başarıyla şifrelendim.
Kimlik doğrulama etiketi ile ilgili bir hata olduğundan, bunun PHP 7.1'e kadar çalışmayacağını düşünüyorum. –
Doğru görünüyor. Hiçbiri GCM şifreleri doğru çalışmıyor. – Us3r
Bu senaryoda 7.1 kullanıyorum, ancak yine de tüm senaryolarda yanlış bir getiri alıyorum. – Dockstar