OpenSSL dizi verilerinin şifresini çözme..
OpenSSL dizi verilerinin şifresini çözme..
Merhaba arkadaşlar tayfun hocamızın göstermiş olduğu OpenSSL veri şifreleme metodu array verilerde işlemiyor son veri şifreleniyor fakat şifre çözüldüğünde son array'ın şifresi çözülüyor örnek yapım aşağıda...
<?php
function lockey($data)
{
$datatype = gettype($data);
if ($datatype == 'array') { // Array veri şifreleme..
$datacount = count($data);
for ($say = 0; $say < $datacount; $say++) {
$veri=$data[$say];
$cipher = 'AES-128-ECB';
$key='123';
$encoded = openssl_encrypt($veri, $cipher, $key);
}
} else { // String ve diğer türde şifreleme..
$cipher = 'AES-128-ECB';
$key='123';
$encoded = openssl_encrypt($data, $cipher, $key);
}
return $encoded;
}
function openkey($encoded)
{
$key='123';
$data = str_replace(' ','+',$encoded);
$cipher = 'AES-128-ECB';
$decoded = openssl_decrypt($data, $cipher, $key);
return $decoded;
}
$veri = ['test', 'test2'];
echo $veridata=lockey($veri); // çıktısı: wLUkfrnPNkafzMPRIdcMdQ==
echo '<br>';
echo openkey($veridata); // çıktısı: test2
fakat gördüğünüz gibi veri değişkeni array türünde veri gönderiyor dögü işlemi de gerçekleşiyor fakat çıktımız son verinin şifresini çözüyor...
umarım soruyu düzgün anlata bilmişimdir...
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
for her döndüğünde şifrelenmiş değeri $encoded'a eşitliyorsun. Yani $encoded ilk önce dizinin ilk elemanını depoluyor sonra for bir daha döndüğünde sırayla son elemana kadar gidiyor. Burda yapman gereken for'un üstünde $encoded = []; yazman ve sonrasında eşitlerken de $encoded[] = openssl_encrypt($veri, $cipher, $key); yazman olacaktır.