Cara Menyulitkan dan Menyahsulit Rentetan PHP
Apabila membincangkan penyulitan, adalah penting untuk membezakan antara penyulitan dan pengesahan. Biasanya, penyulitan yang disahkan, yang menggabungkan penyulitan dengan kod pengesahan mesej (MAC), lebih diutamakan. Untuk memastikan keselamatan, sangat disyorkan untuk mengelak daripada melaksanakan kriptografi anda sendiri dan sebaliknya bergantung pada perpustakaan yang mantap yang dibangunkan dan disemak oleh pakar kriptografi.
Langkah Penyulitan Menggunakan libsodium:
Langkah Penyahsulitan Menggunakan libsodium:
Pertimbangan Tambahan:
Contoh Kod dengan libsodium:
<?php declare(strict_types=1); /** * Encrypt a message * * @param string $message - message to encrypt * @param string $key - encryption key * @return string * @throws RangeException */ function safeEncrypt(string $message, string $key): string { if (mb_strlen($key, '8bit') !== SODIUM_CRYPTO_SECRETBOX_KEYBYTES) { throw new RangeException('Key is not the correct size (must be 32 bytes).'); } $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); $cipher = base64_encode( $nonce. sodium_crypto_secretbox( $message, $nonce, $key ) ); sodium_memzero($message); sodium_memzero($key); return $cipher; } /** * Decrypt a message * * @param string $encrypted - message encrypted with safeEncrypt() * @param string $key - encryption key * @return string * @throws Exception */ function safeDecrypt(string $encrypted, string $key): string { $decoded = base64_decode($encrypted); $nonce = mb_substr($decoded, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, '8bit'); $ciphertext = mb_substr($decoded, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, null, '8bit'); $plain = sodium_crypto_secretbox_open( $ciphertext, $nonce, $key ); if (!is_string($plain)) { throw new Exception('Invalid MAC'); } sodium_memzero($ciphertext); sodium_memzero($key); return $plain; } ?>
Atas ialah kandungan terperinci Bagaimana untuk Menyulitkan dan Menyahsulit Rentetan PHP dengan Selamat Menggunakan libsodium?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!