nullcoder Merhaba
form yapısı olduğunu varsayarsak;
kullanıcıya verdiğiniz key =
<?php
$saltkey = "kvDcvHkYL57asZcJ8Cyz3arZu0so1FQOk3dpX0xyn3P531aJCmft7g=";//Bu keyi kendinize göre oluşturabilirsiniz. buradaki karmaşık kelimelere göre fonksiyonumuz şifre üretecektir. Her yenilemede şifreleme değişir. Localde kullanacaksanız openssl kurulu olmalıdır. Sunucularda 99% openssl yüklüdür. PHP7.0 ve üzeri olması gerekiyor. (sağlıklı olması için)
// şifreleme fonksiyonumuzu yazalım
function key_sifrele($data, $saltkey) {
$sifrelenen = base64_decode($saltkey);
$open_iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$sifrele = openssl_encrypt($data, 'aes-256-cbc', $sifrelenen, 0, $open_iv);
return base64_encode($sifrele . '::' . $open_iv);
}
echo key_sifrele("123456789",$saltkey); //her yenilemede değişeceği için karışıklığı önler ve güvenli hale getirir. ;)
?>
Bu şekilde kullanıcıya verdiğimiz 12345678 nolu keyi şifreledik.. Şimdi posttan gelen değerin şifresini çözerek bizim değerimizle eşleşip eşleşmediğini kontrol edeceğiz.
<form action="key.php" method="post">
<input name="public_key">
<button type="submit">Gönder</button>
</form>
key.php
<?php
$saltkey = "kvDcvHkYL57asZcJ8Cyz3arZu0so1FQOk3dpX0xyn3P531aJCmft7g="; //Bu keyi kendinize göre oluşturabilirsiniz. buradaki karmaşık kelimelere göre fonksiyonumuz şifre üretecektir. Her yenilemede şifreleme değişir. Localde kullanacaksanız openssl kurulu olmalıdır. Sunucularda 99% openssl yüklüdür. PHP7.0 ve üzeri olması gerekiyor. (sağlıklı olması için)
// şimdide şifreyi çözecek fonksiyonumuzu yazalım. NOT: bu geliştirilebilir.
function key_sifre_coz($data, $saltkey) {
$sifrelenen = base64_decode($saltkey);
list($sifreyicoz, $open_iv) = explode('::', base64_decode($data), 2);
return openssl_decrypt($sifreyicoz, 'aes-256-cbc', $sifrelenen, 0, $open_iv);
}
if(isset($_POST)){
$public_key = key_sifre_coz($_POST["public_key"], $saltkey);
if(12345678 == $public_key ){
echo "Key doğru";
} else {
echo "Hatalı Key";
}
}
?>
Burada kullanıcıya vereceğiniz key <?php echo key_sifrele("siberp.com",$saltkey);?> olacaksa şifreleyip vereceksiniz. Bunun üzerinden başka işlemlerde yapabilirsiniz. Aynı şekilde sizde aynı kelimeyi şifreleyerek karış taraftan gelen kelime ile eşleştirebilirsiniz. eğer phpde password_verify fonksiyonu olmasaydı bu fonksiyonu kullanarak login register işlemleri yapılabilirdi. Form göndermede token üretilip bu şekilde eşleştirme yapılabilir. Arama formlarında spam ve flood korumaya karşıda kullanılabilir. vs vs..