📄 AES Şifreleme ve Çözme Uygulamaları: JavaScript & PHP Kullanımı

Ana sayfa Forumlar Kodlar 📄 AES Şifreleme ve Çözme Uygulamaları: JavaScript & PHP Kullanımı

  • Bu konu boş.
1 yazı görüntüleniyor (toplam 1)
  • Yazar
    Yazılar
  • #139
    admin
    Anahtar yönetici

    Güvenli veri iletimi ve saklama işlemlerinde AES (Advanced Encryption Standard) şifreleme algoritması yaygın olarak kullanılmaktadır. Bu makalede, JavaScript (CryptoJS) ve PHP (OpenSSL) kullanarak AES-256-CBC şifreleme ve çözme işlemlerinin nasıl gerçekleştirileceğini açıklıyoruz.

    Web uygulamalarında kullanıcı verilerini güvenli hale getirmek için istemci tarafında JavaScript ile şifreleme, sunucu tarafında PHP ile çözme yöntemi oldukça etkilidir.

    <!DOCTYPE html>
    <html lang=”tr”>
    <head>
    <meta charset=”UTF-8″>
    <meta name=”viewport” content=”width=device-width, initial-scale=1″>
    <title>AES Şifreleme & Çözme</title>
    <link href=”https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css&#8221; rel=”stylesheet”>
    </head>
    <body class=”bg-light”>

    <div class=”container mt-5″>
    <h2 class=”text-center”>AES Şifreleme ve Çözme</h2>
    <div class=”card p-4 shadow”>
    <div class=”mb-3″>
    <label for=”inputText” class=”form-label”>Metin:</label>
    <textarea class=”form-control” id=”inputText” rows=”2″></textarea>
    </div>
    <div class=”mb-3″>
    <label for=”key” class=”form-label”>Şifreleme Anahtarı:</label>
    <input type=”text” class=”form-control” id=”key” placeholder=”Güçlü bir anahtar girin”>
    </div>
    <button class=”btn btn-primary w-100″ onclick=”encryptText()”>Şifrele</button>
    <button class=”btn btn-danger w-100 mt-2″ onclick=”decryptText()”>Çöz</button>
    <div class=”mt-3″>
    <h5>Sonuç:</h5>
    <textarea class=”form-control” id=”result” rows=”2″ readonly></textarea>
    </div>
    </div>
    </div>

    <script src=”https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js”></script&gt;
    <script>
    // AES-256-CBC ile metni şifreleme fonksiyonu
    function encryptText() {
    let text = document.getElementById(“inputText”).value;
    let key = document.getElementById(“key”).value;

    if (text === “” || key === “”) {
    alert(“Metin ve anahtar boş olamaz!”);
    return;
    }

    let keyHash = CryptoJS.SHA256(key); // SHA-256 ile 32 byte anahtar üret
    let iv = CryptoJS.lib.WordArray.random(16); // Rastgele 16 byte IV

    let encrypted = CryptoJS.AES.encrypt(text, keyHash, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
    });

    // IV + Şifreli metni birleştirip Base64 formatına çeviriyoruz
    let encryptedBase64 = CryptoJS.enc.Base64.stringify(iv.concat(encrypted.ciphertext));

    document.getElementById(“result”).value = encryptedBase64;
    }

    // AES-256-CBC ile şifrelenmiş metni çözme fonksiyonu
    function decryptText() {
    let encryptedText = document.getElementById(“result”).value;
    let key = document.getElementById(“key”).value;

    if (encryptedText === “” || key === “”) {
    alert(“Çözülecek metin ve anahtar boş olamaz!”);
    return;
    }

    let keyHash = CryptoJS.SHA256(key); // SHA-256 ile 32 byte anahtar üret
    let encryptedData = CryptoJS.enc.Base64.parse(encryptedText);
    let iv = CryptoJS.lib.WordArray.create(encryptedData.words.slice(0, 4)); // İlk 16 byte IV
    let ciphertext = CryptoJS.lib.WordArray.create(encryptedData.words.slice(4)); // Geri kalan şifreli metin

    let decrypted = CryptoJS.AES.decrypt({ ciphertext: ciphertext }, keyHash, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
    });

    let originalText = decrypted.toString(CryptoJS.enc.Utf8);

    if (!originalText) {
    alert(“Hatalı anahtar veya şifrelenmiş metin!”);
    return;
    }

    document.getElementById(“result”).value = originalText;
    }
    </script>

    </body>
    </html>

    —- — —-

    <?php
    $decrypted_text = “”;
    $error = “”;

    if ($_SERVER[“REQUEST_METHOD”] == “POST”) {
    $encrypted = trim($_POST[“encrypted”] ?? “”);
    $key = trim($_POST[“key”] ?? “”);

    if (empty($encrypted) || empty($key)) {
    $error = “Metin ve anahtar boş olamaz!”;
    } else {
    function aes_decrypt($encrypted, $key) {
    $data = base64_decode($encrypted);
    if (!$data || strlen($data) < 16) {
    return false;
    }

    $iv = substr($data, 0, 16); // İlk 16 byte IV
    $ciphertext = substr($data, 16); // Geri kalan şifreli metin

    $key = hash(‘sha256’, $key, true); // AES-256 için 32 byte anahtar oluştur

    $decrypted = openssl_decrypt($ciphertext, “aes-256-cbc”, $key, OPENSSL_RAW_DATA, $iv);

    return $decrypted !== false ? $decrypted : null;
    }

    $decrypted_text = aes_decrypt($encrypted, $key);

    if (!$decrypted_text) {
    $error = “Hatalı anahtar veya şifrelenmiş metin!”;
    }
    }
    }
    ?>

    <!DOCTYPE html>
    <html lang=”tr”>
    <head>
    <meta charset=”UTF-8″>
    <meta name=”viewport” content=”width=device-width, initial-scale=1″>
    <title>AES Şifre Çözme</title>
    <link href=”https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css&#8221; rel=”stylesheet”>
    </head>
    <body class=”bg-light”>

    <div class=”container mt-5″>
    <h2 class=”text-center”>AES Şifre Çözme</h2>
    <div class=”card p-4 shadow”>
    <form method=”POST”>
    <div class=”mb-3″>
    <label for=”encrypted” class=”form-label”>Şifreli Metin:</label>
    <textarea class=”form-control” id=”encrypted” name=”encrypted” rows=”2″><?= htmlspecialchars($_POST[“encrypted”] ?? “”) ?></textarea>
    </div>
    <div class=”mb-3″>
    <label for=”key” class=”form-label”>Şifreleme Anahtarı:</label>
    <input type=”text” class=”form-control” id=”key” name=”key” value=”<?= htmlspecialchars($_POST[“key”] ?? “”) ?>”>
    </div>
    <button type=”submit” class=”btn btn-danger w-100″>Çöz</button>
    </form>

    <?php if ($decrypted_text): ?>
    <div class=”alert alert-success mt-3″>
    <strong>Çözülen Metin:</strong> <?= htmlspecialchars($decrypted_text) ?>
    </div>
    <?php elseif ($error): ?>
    <div class=”alert alert-danger mt-3″><?= htmlspecialchars($error) ?></div>
    <?php endif; ?>
    </div>
    </div>

    </body>
    </html>

1 yazı görüntüleniyor (toplam 1)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.