Bagaimana cara mengenkripsi dan mendekripsi string di PHP?

Bagaimana Cara Mengenkripsi Dan Mendekripsi String Di Php



Enkripsi adalah proses mengubah data menjadi kode rahasia atau format yang tidak dapat dipahami oleh siapa pun yang tidak memiliki kunci untuk memecahkan kodenya. Dekripsi adalah prosedur untuk mengambil informasi tersebut dan mengembalikannya ke format aslinya yang dapat dibaca. Di PHP, enkripsi, Dan dekripsi dapat digunakan untuk melindungi data sensitif, seperti kata sandi, informasi kartu kredit, dan data pribadi lainnya.

Itu enkripsi algoritma harus mengambil serangkaian data yang ingin Anda enkripsi dan menggunakan metode enkripsi yang dipilih untuk mengenkripsi data. Algoritme kemudian harus mengembalikan data terenkripsi dalam format yang dapat Anda simpan dalam database atau file.

Ke mendekripsi data, Anda harus menggunakan metode enkripsi yang sama untuk mendekripsi data yang digunakan untuk mengenkripsinya. Ini berarti Anda perlu menyimpan kunci di suatu tempat sehingga Anda dapat menggunakannya untuk mendekode data nanti.







Bagaimana cara mengenkripsi dan mendekripsi string PHP?

String PHP bisa terenkripsi Dan didekripsi menggunakan openssl_encrpyt() Dan openssl_decrypt() metode, masing-masing.



Enkripsi String Menggunakan fungsi openssl_encrypt()

Ke mengenkripsi sebuah string dalam PHP menggunakan openssl_encrypt() fungsi, Anda perlu menyediakan string teks biasa, metode enkripsi, dan kunci. Fungsi tersebut akan mengembalikan data terenkripsi, yang kemudian dapat Anda simpan atau kirimkan dengan aman.



Sintaks untuk openssl_encrypt() metode adalah:





string openssl_encrypt ( rangkaian $data , rangkaian $metode , rangkaian $kunci , $opsi = 0 , rangkaian $iv , rangkaian $tag = BATAL , rangkaian $ Anda , int $tag_panjang = 16 )
  • $data: String atau data yang ingin Anda enkripsi.
  • $metode: Metode enkripsi atau cipher yang ingin Anda gunakan. Anda dapat memperoleh daftar metode penyandian yang didukung dengan menggunakan openssl_get_cipher_methods()
  • $kunci: Kunci enkripsi yang akan digunakan untuk mengenkripsi data. Itu harus berupa string dengan panjang dan keacakan yang sesuai, berdasarkan metode cipher yang dipilih.
  • $opsi: Parameter opsional yang dapat menyertakan tanda tambahan untuk opsi enkripsi tertentu. Anda dapat menggabungkan bendera menggunakan sedikit demi sedikit ATAU (|) Bendera umum termasuk OPENSSL_RAW_DATA Dan OPENSSL_ZERO_PADDING .
  • $iv: Vektor inisialisasi (iv) digunakan untuk enkripsi; itu harus berupa nilai acak dan unik, disediakan sebagai string.
  • $ tag: Parameter opsional yang digunakan untuk mode penyandian AEAD (Authenticated Encryption with Associated Data), seperti GCM (Galois/Counter Mode) atau CCM (Counter with CBC-MAC). Ini menyimpan tag otentikasi yang dihasilkan selama enkripsi.
  • Milikmu: Data terautentikasi tambahan yang dapat digunakan untuk mode penyandian AEAD.
  • $tag_panjang: Panjang tag autentikasi. Untuk mode GCM, panjang tag berkisar antara 4 hingga 16 byte.

Misalnya:


$simple_string = 'Selamat datang di Linuxint \N ' ;
gema 'Tali Asli:' . $simple_string ;
$ penyandian = 'AES-128-RKT' ;
$iv_panjang = membukasl_cipher_iv_length ( $ penyandian ) ;
$opsi = 0 ;
$enkripsi_iv = '1234567891011121' ;
$encryption_key = 'Linux' ;
$enkripsi = openssl_encrypt ( $simple_string , $ penyandian ,
$encryption_key , $opsi , $enkripsi_iv ) ;
gema 'String Terenkripsi:' . $enkripsi . ' \N ' ;
?>

Kode pertama mendeklarasikan teks dasar “Selamat datang di Linuxhint” dan menggunakan perintah gema untuk menampilkannya. Kemudian, itu menentukan algoritma enkripsi yang akan digunakan, AES-128-RKT . Ini juga menggunakan openssl_cipher_iv_length() berfungsi untuk menghitung besarnya vektor inisialisasi (IV) diperlukan untuk sandi ini.



Kode mengatur enkripsi iv nilai ke ‘1234567891011121’ dan kunci enkripsi untuk 'Linux' . String terenkripsi kemudian ditampilkan menggunakan perintah echo setelah enkripsi selesai menggunakan openssl_encrypt() fungsi. Karena vektor inisialisasi acak yang digunakan untuk enkripsi, string terenkripsi akhir akan bervariasi setiap saat.

Mendekripsi String Menggunakan openssl_decrypt() Fungsi

Untuk mendekripsi string dalam PHP, Anda dapat menggunakan openssl_decrypt() fungsi. Fungsi ini mengambil data terenkripsi, metode enkripsi, dan kunci sebagai input dan mengembalikan teks biasa yang didekripsi.

Sintaks untuk openssl_decrypt() metode adalah:

string openssl_decrypt ( rangkaian $data , rangkaian $metode , rangkaian $kunci , int $opsi = 0 , rangkaian $iv , rangkaian $tag , rangkaian $ Anda )

Argumen yang diteruskan ke fungsi adalah:

  • $data: String atau data terenkripsi yang ingin Anda dekripsi.
  • $metode: Metode enkripsi atau sandi yang digunakan selama enkripsi. Anda dapat memperoleh daftar metode penyandian yang didukung dengan menggunakan openssl_get_cipher_methods()
  • $kunci: Kunci enkripsi yang digunakan untuk mengenkripsi data. Itu harus cocok dengan kunci yang digunakan selama enkripsi.
  • $opsi: Parameter opsional yang dapat menyertakan tanda tambahan untuk opsi dekripsi tertentu. Anda dapat menggabungkan flag menggunakan operator bitwise OR (|). Bendera umum termasuk OPENSSL_RAW_DATA Dan OPENSSL_ZERO_PADDING .
  • $iv: Itu vektor inisialisasi (IV) digunakan selama enkripsi. Itu harus IV yang sama yang digunakan selama enkripsi dan diteruskan sebagai string.
  • $label: Tag autentikasi untuk mode penyandian AEAD (Authenticated Encryption with Associated Data), seperti GCM (Galois/Counter Mode) atau CCM (Counter with CBC-MAC). Jika otentikasi gagal, openssl_decrypt() akan mengembalikan FALSE.
  • Milikmu: Data terautentikasi tambahan yang digunakan selama enkripsi untuk mode cipher AEAD.

Nilai Pengembalian: Jika berhasil, ini mengembalikan string yang didekripsi; jika tidak, ia mengembalikan FALSE.

Misalnya:


$encrypted_string = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
gema 'String Terenkripsi:' . $encrypted_string . ' \N ' ;
$dekripsi_iv = '1234567891011121' ;
$ penyandian = 'AES-128-RKT' ;
$opsi = 0 ;
$dekripsi_kunci = 'Linux' ;
$dekripsi = openssl_decrypt ( $encrypted_string , $ penyandian ,
$dekripsi_kunci , $opsi , $dekripsi_iv ) ;
gema 'String yang Didekripsi:' . $dekripsi ;
?>

Panjang vektor dalam kode ini dihitung menggunakan openssl_cipher_iv_length() fungsi, dan enkripsi iv dan parameter kunci yang sama digunakan selama enkripsi. Algoritma penyandian didefinisikan sebagai AES-128-RKT .

String yang sebelumnya dienkripsi didekripsi menggunakan algoritme ciphering, kunci enkripsi, pengaturan, dan nilai IV oleh openssl_decrypt() fungsi. Teks hasil dekripsi kemudian ditampilkan menggunakan perintah echo.

Kesimpulan

Pembuatan situs web sering melibatkan enkripsi dan dekripsi data. Dengan menggunakan enkripsi untuk melindungi data sensitif, Anda dapat mencegah pengguna Anda dari pencurian identitas, penipuan, dan ancaman keamanan lainnya. String dalam PHP dapat dienkripsi dan didekripsi oleh fungsi openssl_encrypt() Dan openssl_decrypt() fungsi. Dengan hati-hati menggunakan algoritme dan kunci enkripsi, Anda dapat membuat sistem yang kuat dan aman untuk menangani data sensitif dalam aplikasi PHP Anda.