Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Menyulitkan dan Menyahsulit Kata Laluan Dengan Selamat Menggunakan PHP?

Bagaimanakah Saya Boleh Menyulitkan dan Menyahsulit Kata Laluan Dengan Selamat Menggunakan PHP?

Mary-Kate Olsen
Lepaskan: 2024-12-28 10:05:10
asal
459 orang telah melayarinya

How Can I Securely Encrypt and Decrypt Passwords Using PHP?

Kendalikan Kata Laluan dengan Selamat: Penyulitan dan Penyahsulitan

Apabila menyimpan data sensitif seperti kata laluan, adalah penting untuk menggunakan langkah keselamatan yang sesuai. Walaupun fungsi pencincangan digunakan untuk mengamankan kata laluan yang tidak dapat dipulihkan, mungkin terdapat keadaan di mana penyulitan boleh balik diingini.

Walaupun terdapat salah tanggapan yang mengelilingi base64 sebagai kaedah penyulitan yang sah, ia kekal sebagai teknik pengekodan yang mudah. Sebaliknya, kami menyelidiki pendekatan yang lebih selamat untuk menyulitkan dan menyahsulit kata laluan, yang melibatkan mencipta perebutan unik untuk mengubah data sebelum dan selepas pengekodan base64.

Untuk melaksanakan kaedah ini, kami menentukan kunci ("kata laluan kepada (en/de)crypt") dan rentetan untuk disulitkan (" rentetan untuk disulitkan ").

Penyulitan Proses

$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
    )
);
Salin selepas log masuk

Kod ini memulakan proses penyulitan dengan mencipta vektor permulaan (IV) dan menggunakan algoritma cincang yang kuat (SHA-256) untuk menjana kunci penyulitan daripada kunci yang disediakan. Data tersebut kemudian disulitkan menggunakan algoritma penyulitan yang sangat selamat (RIJNDAEL-128) dalam mod CBC. Hasil yang disulitkan kemudiannya dikodkan base64 untuk menghasilkan rentetan yang dikelirukan.

Proses Penyahsulitan

$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
    ),
    ""
);
Salin selepas log masuk

Proses penyahsulitan membalikkan urutan penyulitan. Rentetan berkod base64 dinyahkod, dan IV diperoleh semula. Kunci penyulitan dikira semula, dan data dinyahsulit menggunakan IV dan kunci asal. Akhir sekali, sebarang bait nol tertinggal dialih keluar, menghasilkan rentetan teks jelas asal.

Awas: Adalah penting untuk ambil perhatian bahawa kod yang diberikan, walaupun berkesan untuk menggambarkan proses penyulitan/penyahsulitan, adalah tidak dimaksudkan untuk kegunaan pengeluaran dalam bentuk semasa. Ia tidak mempunyai mekanisme pengesahan yang betul dan langkah keselamatan lain yang penting untuk melindungi data sensitif. Apabila berurusan dengan penyulitan kata laluan, sentiasa gunakan teknik penyulitan yang disahkan dan rujuk kepada amalan terbaik industri yang mantap untuk mendapatkan panduan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyulitkan dan Menyahsulit Kata Laluan Dengan Selamat Menggunakan 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