Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menyulitkan dan Menyahsulit Data dengan Selamat Menggunakan PHP?

Bagaimana untuk Menyulitkan dan Menyahsulit Data dengan Selamat Menggunakan PHP?

Susan Sarandon
Susan Sarandonasal
2024-12-22 19:14:10718semak imbas

How to Securely Encrypt and Decrypt Data Using PHP?

Cara Menyulitkan dan Menyahsulit Kata Laluan dengan Selamat dalam PHP

Menyimpan maklumat pengguna sensitif, seperti bukti kelayakan akaun asing, memerlukan langkah berjaga-jaga khas untuk memastikan data keselamatan. Walaupun penyulitan menyediakan lapisan perlindungan, adalah penting untuk menggunakan kaedah teguh yang menghalang akses tanpa kebenaran kepada data teks biasa.

Hashing lwn. Penyulitan

Hashing ialah pendekatan pilihan untuk penyimpanan kata laluan. Tidak seperti penyulitan, pencincangan mengubah kata laluan kepada format yang unik dan tidak boleh balik, menjadikannya hampir mustahil untuk mendapatkan kata laluan asal. Ini memastikan bahawa walaupun penyerang mendapat akses kepada kata laluan yang dicincang, mereka tidak boleh menjejaskan akaun pengguna.

Fungsi Penyulitan dan Penyahsulitan

Untuk situasi di mana penyulitan diperlukan, PHP menyediakan beberapa fungsi untuk menyulitkan dan menyahsulit teks. Satu kaedah biasa ialah sifir Rijndael, juga dikenali sebagai AES-128:

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted '; // note the spaces

Untuk Menyulitkan:

$iv = mcrypt_create_iv(
    mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
    MCRYPT_DEV_URANDOM
);

$encrypted = base64_encode(
    $iv .
    mcrypt_encrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        $string,
        MCRYPT_MODE_CBC,
        $iv
    )
);

Untuk Nyahsulit:

$data = base64_decode($encrypted);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

$decrypted = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
        MCRYPT_MODE_CBC,
        $iv
    ),
    ""
);

Amaran

Data yang disulitkan terdedah kepada serangan oracle padding jika tidak disahkan. Mekanisme penyulitan yang disahkan hendaklah sentiasa digunakan bersama-sama dengan penyulitan.

Amalan Terbaik

Untuk memastikan tahap keselamatan tertinggi, ikuti amalan terbaik ini:

  • Gunakan penyulitan rawak kunci.
  • Simpan data yang disulitkan secara berasingan daripada plaintext.
  • Hadkan akses kepada kunci penyulitan.
  • Putar penyulitan secara kerap kunci.
  • Pertimbangkan untuk menggunakan perpustakaan penyulitan yang melaksanakan algoritma selamat dan melindungi daripada serangan yang diketahui.

Atas ialah kandungan terperinci Bagaimana untuk Menyulitkan dan Menyahsulit Data dengan Selamat Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn