Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Penyulitan Dua Hala Boleh Menyimpan dan Mendapatkan Kata Laluan Selamat dalam PHP?

Bagaimanakah Penyulitan Dua Hala Boleh Menyimpan dan Mendapatkan Kata Laluan Selamat dalam PHP?

Barbara Streisand
Lepaskan: 2024-12-17 00:15:25
asal
901 orang telah melayarinya

How Can Two-Way Encryption Secure Password Storage and Retrieval in PHP?

Penyulitan Dua Hala: Penyimpanan Selamat dan Pengambilan Kata Laluan

Pengenalan

Untuk penyimpanan selamat kata laluan yang memerlukan pengambilan semula, penyulitan dua hala adalah penting. Artikel ini meneroka kaedah untuk menyulitkan dan menyahsulit kata laluan dalam PHP, memastikan privasi mereka sambil mengekalkan kebolehcapaian pengguna.

Menyulitkan dan Menyahsulit Kata Laluan dalam PHP

Untuk menyulitkan kata laluan dalam PHP , anda boleh menggunakan perpustakaan mcrypt. Fungsi berikut menunjukkan proses penyulitan:

function encryptPassword($password, $key)
{
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);

    return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv);
}
Salin selepas log masuk

Untuk menyahsulit kata laluan, anda menggunakan fungsi yang serupa:

function decryptPassword($encryptedPassword, $key)
{
    $iv = substr($encryptedPassword, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

    return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, substr($encryptedPassword, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)), MCRYPT_MODE_CBC, $iv);
}
Salin selepas log masuk

Memilih Algoritma Penyulitan Selamat

Mengenai algoritma penyulitan, Blowfish dan Rijndael-128 (AES-128) dianggap sebagai pilihan selamat untuk penyulitan kata laluan. Mereka menawarkan tahap perlindungan yang tinggi terhadap serangan kekerasan.

Storan Kunci Peribadi

Adalah penting untuk melindungi kunci peribadi yang digunakan untuk penyulitan. Pilihan yang berbeza untuk menyimpan kunci persendirian termasuk:

  • Penyulitan: Sulitkan kunci dengan kata laluan yang berbeza dan simpannya secara berasingan.
  • HSM (Perkakasan Modul Keselamatan): Simpan kunci pada peranti fizikal yang direka untuk kunci selamat storan.
  • Kunci Pisah: Bahagikan kunci kepada beberapa bahagian dan simpannya di lokasi yang berbeza.

Memerlukan Input Pengguna untuk Kunci Peribadi

Memerlukan pengguna memasukkan kunci peribadi setiap kali mereka memerlukan kata laluan yang dinyahsulit memastikan keselamatan tambahan. Ini menghalang akses tanpa kebenaran walaupun kunci terjejas.

Potensi Kerentanan Keselamatan

  • Serangan Man-in-the-Middle (MITM): Memintas data yang disulitkan semasa penghantaran.
  • Suntikan Kod: Kod tidak selamat boleh membenarkan penyerang mengakses kunci peribadi atau data yang disulitkan.
  • Serangan Brute-Force: Menggunakan perisian khusus untuk meneka kunci penyulitan.

Mengurangkan Risiko

  • Laksanakan algoritma penyulitan yang kukuh (cth., Blowfish atau AES-128).
  • Lindungi kunci persendirian melalui penyulitan, HSM atau pemisahan kunci.
  • Gunakan protokol SSL/TLS yang selamat untuk penghantaran data.
  • Semak secara berkala dan kemas kini langkah keselamatan.

Contoh Kelas PHP untuk Penyulitan:

class Encryption
{
    private $key = '';
    private $algorithm = '';

    public function __construct($key, $algorithm = MCRYPT_RIJNDAEL_128)
    {
        $this->key = $key;
        $this->algorithm = $algorithm;
    }

    public function encrypt($data)
    {
        $iv = mcrypt_create_iv(mcrypt_get_iv_size($this->algorithm, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);

        return mcrypt_encrypt($this->algorithm, $this->key, $data, MCRYPT_MODE_CBC, $iv) . $iv;
    }

    public function decrypt($data)
    {
        $ivSize = mcrypt_get_iv_size($this->algorithm, MCRYPT_MODE_CBC);
        $iv = substr($data, 0, $ivSize);

        return mcrypt_decrypt($this->algorithm, $this->key, substr($data, $ivSize), MCRYPT_MODE_CBC, $iv);
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Penyulitan Dua Hala Boleh Menyimpan dan Mendapatkan Kata Laluan Selamat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan