PHP İçin şifreleme nasıl yapılır?

MD5 güvenli değil şifreleme için ve encryption değil, hash algoritması. AES-256 kullan. Ayrıca password depolamak için geri çözmek yerine oneway hashing çok daha sağlıklı. Ama MD5 gibi bir şeyle değil de, Bcrypt gibi bir algoritmayla yapmak daha sağlıklı. Geri çözmeye çalışmamalısın şifreyi, onun yerine hash kıyası yaparsın. Geri çözülemeyecek olduğu için sisteminde başka bir açık yoksa decrypt ederek şifreye ulaşamazlar.

Geri okumak istediklerini encrypt ediyorsun, geri okumak değil sadece test etmek istediğin verileri hash yapıyorsun.
 
MD5 güvenli değil şifreleme için ve encryption değil, hash algoritması. AES-256 kullan. Ayrıca password depolamak için geri çözmek yerine oneway hashing çok daha sağlıklı. Ama MD5 gibi bir şeyle değil de, bcrypt gibi bir algoritmayla yapmak daha sağlıklı. Geri çözmeye çalışmamalısın şifreyi, onun yerine hash kıyası yaparsın. Geri çözülemeyecek olduğu için sisteminde başka bir açık yoksa decrypt ederek şifreye ulaşamazlar.

Örnek olarak basit bir post işlemi ile gösterir misiniz?
 
PHP için;

password_hash fonksiyonu da bcrypt kullanıyor default olarak hash için.
aad'ı şimdilik önemsemene gerek yok.
PHP:
<?php

if(!isset($_SESSION)) {
    session_start();
}

function encrypt($data, $key, $iv, $aad ='') {
    $cipher = "aes-256-gcm";
    $tag = "";
    $options = 0;
    $encrypted = openssl_encrypt($data, $cipher, $key, $options, $iv, $tag, $aad);
    return $encrypted . ":" . $tag;
}

function decrypt($data, $key, $iv, $aad ='') {
    $cipher = "aes-256-gcm";
    $tag = "";
    $options = 0;
    list($data, $tag) = explode(":", $data);
    $decrypted = openssl_decrypt($data, $cipher, $key, $options, $iv, $tag, $aad);
    return $decrypted;
}


$key = openssl_random_pseudo_bytes(32); // Daha sonra kullanmak için keyi kaydetmek gerekiyor.
$iv = openssl_random_pseudo_bytes(16);


if(isset($_POST['username'])) {
    $encrypted = encrypt($_POST['username'], $key, $iv);
    echo "Encrypted: " . $encrypted . "<br>";
    echo "Decrypted: " . decrypt($encrypted, $key, $iv) . "<br>";

    echo password_hash($_POST['password'], PASSWORD_DEFAULT);
   
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>

</head>
<body>
    <form action="" method="post">
        <input type="text" name="username" id="" />
        <input type="password" name="password" id="" />
        <button type="submit">Send</button>
    </form>
</body>
</html>
 

Yeni konular

Geri
Yukarı