


Cara mengendalikan penyulitan dan penyahsulitan data apabila melaksanakan API dalam PHP
Dengan pembangunan Internet yang berterusan, skop aplikasi API (Antara Muka Pengaturcaraan Aplikasi) menjadi semakin meluas, dan interaksi data antara pelbagai sistem menjadi semakin kerap. Untuk penghantaran data sensitif, penyulitan dan penyahsulitan data adalah langkah penting. Artikel ini akan memperkenalkan cara mengendalikan penyulitan dan penyahsulitan data apabila melaksanakan API berdasarkan PHP.
1. Mengapa penyulitan data diperlukan
Penyulitan data merujuk kepada menukar teks biasa asal kepada teks sifir mengikut algoritma tertentu, supaya orang yang belum memperoleh kunci yang sepadan tidak dapat mentafsirnya, dengan itu mencapai Kerahsiaan data. Dalam pembangunan API, sebab utama penyulitan data ialah dua perkara berikut:
- Keselamatan data
Apabila API dibuka kepada pihak ketiga, disebabkan oleh Transmisi tidak tidak menjamin bahawa ia akan dijalankan dalam persekitaran komunikasi peribadi, jadi penyulitan boleh digunakan untuk memastikan keselamatan dan ketulenan data untuk mengelakkan data dicuri atau diganggu semasa proses penghantaran.
- Pengesahan Kesahan
Penyulitan data boleh memastikan kesahihan penghantaran data melalui pengesahan identiti, tandatangan, dsb. Semasa proses penghantaran permintaan API, parameter permintaan disulitkan dengan algoritma tidak boleh balik untuk memastikan kesahihan permintaan dan mengelakkan pengubahan atau pemalsuan data permintaan secara haram.
2. PHP melaksanakan penyulitan data
- Algoritma penyulitan simetri
Algoritma penyulitan simetri bermakna kunci yang digunakan untuk penyulitan dan penyahsulitan adalah sama, anda hanya perlu lulus kunci sebagai parameter untuk menyelesaikan operasi penyulitan dan penyahsulitan. Algoritma penyulitan simetri yang biasa digunakan dalam pembangunan API termasuk DES, 3DES, AES, dsb.
Mengambil algoritma penyulitan AES sebagai contoh, PHP menyediakan fungsi seperti openssl_encrypt() dan openssl_decrypt() untuk melaksanakan operasi penyulitan simetri. Penggunaannya adalah seperti berikut:
//AES加密 function aesEncrypt($data, $key) { $iv_len = openssl_cipher_iv_length('AES-128-CBC'); $iv = openssl_random_pseudo_bytes($iv_len); $encrypted = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); $result = base64_encode($iv . $encrypted); return $result; } //AES解密 function aesDecrypt($data, $key) { $data = base64_decode($data); $iv_len = openssl_cipher_iv_length('AES-128-CBC'); $iv = substr($data, 0, $iv_len); $encrypted = substr($data, $iv_len); $decrypted = openssl_decrypt($encrypted, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); return $decrypted; }
Antaranya, $data ialah data yang hendak disulitkan, dan $key ialah kuncinya. Semasa proses penyulitan, dapatkan panjang vektor IV yang diperlukan oleh algoritma penyulitan dengan memanggil openssl_cipher_iv_length(), panggil openssl_random_pseudo_bytes() untuk menjana vektor IV rawak, dan kemudian panggil fungsi openssl_encrypt() untuk melaksanakan operasi penyulitan. Dalam proses penyahsulitan, teks sifir mula-mula dipulihkan kepada data binari melalui fungsi base64_decode(), kemudian vektor IV dan data yang disulitkan diekstrak masing-masing, dan fungsi openssl_decrypt() dipanggil untuk melaksanakan operasi penyahsulitan.
- Algoritma penyulitan asimetri
Algoritma penyulitan asimetri bermakna kunci yang digunakan untuk penyulitan dan penyahsulitan adalah berbeza Secara amnya, kunci awam didedahkan kepada umum dan digunakan untuk menyulitkan data. Ia kemudiannya dinyahsulit oleh kunci persendirian di bahagian pelayan. Dalam pembangunan API, algoritma penyulitan asimetri biasa termasuk RSA, DSA, dsb.
Mengambil algoritma penyulitan RSA sebagai contoh, PHP menyediakan fungsi seperti openssl_public_encrypt dan openssl_private_decrypt untuk melaksanakan operasi penyulitan asimetri. Penggunaannya adalah seperti berikut:
//RSA加密 function rsaEncrypt($data,$public_key) { $encrypted = ''; openssl_public_encrypt($data,$encrypted,$public_key,OPENSSL_PKCS1_PADDING); $encrypted = base64_encode($encrypted); return $encrypted; } //RSA解密 function rsaDecrypt($data,$private_key) { $decrypted = ''; openssl_private_decrypt(base64_decode($data),$decrypted,$private_key,OPENSSL_PKCS1_PADDING); return $decrypted; }
Antaranya, $data ialah data yang akan disulitkan, dan $public_key ialah kunci awam. Semasa proses penyulitan, data disulitkan dengan memanggil fungsi openssl_public_encrypt() dan kemudian data yang disulitkan dikodkan oleh fungsi base64_encode(). Semasa proses penyahsulitan, data yang disulitkan dinyahsulitkan dengan memanggil fungsi openssl_private_decrypt(), dan kemudian data yang disulitkan dikembalikan.
3. PHP melaksanakan tandatangan data
Tandatangan data dalam API disahkan kesahihannya dengan mencincang parameter. Untuk parameter permintaan API, pelayan perlu melakukan tandatangan data untuk memastikan integriti dan ketulenan penghantaran data.
Algoritma pencincangan yang biasa digunakan termasuk HMAC, SHA1, MD5, dsb. Mengambil HMAC sebagai contoh, tandatangan data boleh dilaksanakan dengan mudah menggunakan fungsi hash_hmac() PHP terbina dalam. Penggunaannya adalah seperti berikut:
//HMAC签名 function hmacSign($data, $secret) { $signed_data = hash_hmac('sha256', $data, $secret, false); return $signed_data; }
Antaranya, $data ialah data yang perlu ditandatangani, dan $secret ialah kunci tandatangan. Panggil fungsi hash_hmac() untuk menyulitkan data dan mengembalikan data yang ditandatangani.
4. Contoh penyulitan dan penyahsulitan data
Seterusnya, kami akan menggunakan kaedah penyulitan dan tandatangan data di atas secara menyeluruh untuk menunjukkan cara menggunakan PHP untuk melengkapkan proses penyulitan dan penyahsulitan parameter permintaan API.
//数据加密 $data = [ 'user_id' => 12345, 'user_name' => 'test', 'timestamp' => time(), ]; $json_data = json_encode($data); $encrypted_data = aesEncrypt($json_data, $encrypt_key); //数据签名 $signature_data = $encrypted_data . $secret_key; $signature = hmacSign($signature_data, $hmac_key); //API请求构造 $params = [ 'data' => $encrypted_data, 'signature'=> $signature, ]; $request_url = 'http://api.example.com' . '?'. http_build_query($params); //API响应解析 $response_data = file_get_contents($request_url); $response_data = json_decode($response_data, true); //数据解密 $encrypted_data = $response_data['data']; $signature_data = $encrypted_data . $secret_key; $signature = $response_data['signature']; if(hmacSign($signature_data, $hmac_key) === $signature) { $json_data = aesDecrypt($encrypted_data, $encrypt_key); $response = json_decode($json_data, true); //TODO:处理API响应数据 } else { //TODO:处理签名不合法的情况 }
Dalam kod di atas, fungsi aesEncrypt() mula-mula digunakan untuk menyulitkan parameter permintaan secara simetri, dan kemudian fungsi hmacSign() digunakan untuk mencincang data yang disulitkan untuk menjana parameter permintaan yang ditandatangani. Selepas pelayan menerima permintaan, ia mengesahkan sama ada tandatangan itu sah dengan mencincang data tandatangan, dan kemudian menggunakan fungsi aesDecrypt() untuk menyahsulit data yang disulitkan untuk mendapatkan parameter permintaan asal.
Dalam proses permohonan sebenar, adalah perlu untuk memastikan bahawa kunci penyulitan, kunci tandatangan dan maklumat lain tidak boleh dibocorkan untuk memastikan keselamatan data API. Pada masa yang sama, penyulitan dan algoritma tandatangan yang sesuai perlu dipilih berdasarkan keperluan penggunaan sistem untuk memenuhi prestasi sistem dan keperluan keselamatan.
Atas ialah kandungan terperinci Cara mengendalikan penyulitan dan penyahsulitan data apabila melaksanakan API dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Menyahsulit kod status HTTP 460: Mengapakah ralat ini berlaku? Pengenalan: Dalam penggunaan rangkaian harian, kami sering menghadapi pelbagai gesaan ralat, termasuk kod status HTTP. Kod status ini ialah mekanisme yang ditakrifkan oleh protokol HTTP untuk menunjukkan pemprosesan permintaan. Di antara kod status ini, terdapat kod ralat yang agak jarang berlaku, iaitu 460. Artikel ini akan menyelidiki kod ralat ini dan menerangkan sebab ralat ini berlaku. Definisi kod status HTTP 460: Pertama, kita perlu memahami asas kod status HTTP

Dalam telefon bimbit Apple, pengguna boleh menyulitkan album foto mengikut keperluan mereka sendiri. Sesetengah pengguna tidak tahu cara menyediakannya. Anda boleh menambah gambar yang perlu disulitkan ke memo, dan kemudian mengunci memo Seterusnya, editor akan memperkenalkan kaedah menyediakan penyulitan album foto mudah alih untuk pengguna yang berminat, datang dan lihat. Tutorial telefon bimbit Apple Bagaimana untuk menyediakan penyulitan album foto pada telefon bimbit Apple Jawapan: Selepas menambah gambar yang perlu disulitkan pada memo, pergi ke kunci memo untuk pengenalan terperinci: 1. Masukkan album foto, pilih gambar yang perlu disulitkan, dan kemudian klik [Tambah ke] di bawah. 2. Pilih [Tambah pada Nota]. 3. Masukkan memo, cari memo yang baru anda buat, masukkannya dan klik ikon [Hantar] di penjuru kanan sebelah atas. 4. Klik [Kunci Peranti] di bawah

Penyulitan folder ialah kaedah perlindungan data biasa yang menyulitkan kandungan folder supaya hanya mereka yang mempunyai kata laluan penyahsulitan boleh mengakses fail. Apabila menyulitkan folder, terdapat beberapa cara biasa untuk menetapkan kata laluan tanpa memampatkan fail. Pertama, kita boleh menggunakan fungsi penyulitan yang disertakan dengan sistem pengendalian untuk menetapkan kata laluan folder. Untuk pengguna Windows, anda boleh menyediakannya dengan mengikuti langkah berikut: Pilih folder untuk disulitkan, klik kanan folder dan pilih "Properties"

Dalam persekitaran kerja hari ini, kesedaran semua orang tentang kerahsiaan semakin kukuh dan kukuh, dan operasi penyulitan sering dilakukan untuk melindungi fail apabila menggunakan perisian. Khususnya untuk dokumen penting, kesedaran tentang kerahsiaan harus ditingkatkan, dan keselamatan dokumen harus diberi keutamaan pada setiap masa. Jadi saya tidak tahu sejauh mana semua orang memahami penyahsulitan perkataan Bagaimana untuk mengendalikannya secara khusus? Hari ini kami sebenarnya akan menunjukkan kepada anda proses penyahsulitan perkataan melalui penjelasan berikut Rakan-rakan yang perlu mempelajari ilmu penyahsulitan perkataan tidak boleh ketinggalan kursus hari ini. Operasi penyahsulitan pertama sekali diperlukan untuk melindungi fail, yang bermaksud bahawa fail dilindungi sebagai dokumen. Selepas melakukan ini pada fail, gesaan muncul apabila anda membuka fail itu semula. Cara untuk menyahsulit fail adalah dengan memasukkan kata laluan, jadi anda boleh terus

Editor akan memperkenalkan kepada anda tiga kaedah penyulitan dan pemampatan: Kaedah 1: Penyulitan Kaedah penyulitan paling mudah ialah memasukkan kata laluan yang anda ingin tetapkan semasa menyulitkan fail, dan penyulitan dan pemampatan selesai. Kaedah 2: Penyulitan automatik Kaedah penyulitan biasa memerlukan kami memasukkan kata laluan semasa menyulitkan setiap fail Jika anda ingin menyulitkan sejumlah besar pakej termampat dan kata laluan adalah sama, maka kami boleh menetapkan penyulitan automatik dalam WinRAR, dan kemudian hanya Apabila. memampatkan fail seperti biasa, WinRAR akan menambah kata laluan pada setiap pakej yang dimampatkan. Kaedahnya adalah seperti berikut: Buka WinRAR, klik Options-Settings dalam antara muka tetapan, tukar ke [Compression], klik Create Default Configuration-Set Password Masukkan kata laluan yang ingin kita tetapkan di sini, klik OK untuk melengkapkan tetapan, kita hanya perlu untuk memperbetulkan

Menyahsulit helah yang ditambahkan oleh penterjemah PyCharm PyCharm ialah persekitaran pembangunan bersepadu (IDE) yang digemari oleh ramai pembangun Python, dan ia menyediakan banyak ciri berkuasa untuk meningkatkan kecekapan pembangunan. Antaranya, tetapan penterjemah adalah bahagian penting PyCharm Menetapkan penterjemah dengan betul boleh membantu pembangun menjalankan kod dengan lancar dan menyahpepijat program. Artikel ini akan memperkenalkan beberapa teknik untuk menyahsulit penambahan penterjemah PyCharm dan menggabungkannya dengan contoh kod khusus untuk menunjukkan cara mengkonfigurasi penterjemah dengan betul. Menambah dan memilih jurubahasa dalam Py

Cara menyahsulitkan video pada EZVIZ Cloud: Terdapat banyak cara untuk menyahsulitkan video pada EZVIZ Cloud, salah satunya adalah dengan menggunakan EZVIZ Cloud Mobile App. Pengguna hanya perlu memasukkan senarai peranti, pilih kamera untuk dinyahsulit dan masukkan halaman butiran peranti. Pada halaman butiran peranti, cari pilihan "Tetapan", kemudian pilih "Penyulitan Video" untuk membuat tetapan yang berkaitan. Dalam antara muka tetapan penyulitan video, anda boleh memilih pilihan untuk mematikan penyulitan video dan menyimpan tetapan untuk menyelesaikan operasi penyahsulitan. Langkah mudah ini membolehkan pengguna menyahsulit video dengan mudah dan meningkatkan kemudahan menggunakan kamera. Jika anda menggunakan klien komputer EZVIZ Cloud, anda juga boleh membatalkan penyulitan video melalui langkah yang serupa. Hanya log masuk dan pilih kamera yang sepadan, masukkan antara muka butiran peranti, dan kemudian cari penambahan video dalam tetapan.

Pengarang asal: Meteor, ChainCatcher Editor asal: Marco, ChainCatcher Baru-baru ini, protokol kebolehoperasian rantai penuh Analog telah menjadi perhatian umum dengan pendedahan sebanyak AS$16 juta dalam pembiayaan institusi termasuk TribeCapital, NGCVentures, Wintermute, GSR, NEAR, OrangeDAO. , dan syarikat pengurusan aset Alternatif Mike Novogratz Samara Asset Group, Balaji Srinivasan, dsb. Pada penghujung tahun 2023, Analog menimbulkan keterujaan dalam industri Mereka mengeluarkan maklumat tentang acara pendaftaran testnet terbuka pada platform X.
