Rumah >pembangunan bahagian belakang >tutorial php >Teknologi penyulitan dan penyahsulitan dalam PHP
PHP ialah bahasa pembangunan web yang digunakan secara meluas, dan teknologi penyulitan dan penyahsulitannya sangat penting dalam keselamatan data. Artikel ini akan memperkenalkan teknologi penyulitan dan penyahsulitan dalam PHP dan meneroka aplikasi praktikalnya dalam aplikasi web.
1. Teknologi Penyulitan
Teknologi penyulitan ialah proses menukar teks biasa kepada teks yang disulitkan. Dalam PHP, teknologi penyulitan digunakan terutamanya untuk memastikan keselamatan data yang dihantar, seperti maklumat log masuk pengguna, data transaksi, dll. Teknologi penyulitan biasa dalam PHP adalah seperti berikut:
Penyulitan cincang ialah untuk menukar input dalam sebarang panjang (juga dipanggil mesej) melalui algoritma tertentu. Untuk keluaran panjang tetap, algoritma memenuhi dua syarat berikut:
a Untuk input yang sama, algoritma mesti memastikan bahawa output adalah sama; mesti memastikan bahawa output adalah berbeza.
<?php $orig_str = "Hello World"; $encrypted_str = md5($orig_str); echo "加密前的字符串:$orig_str <br>"; echo "加密后的字符串:$encrypted_str"; ?>
<?php $key = '0123456789abcdef'; // 密钥 $input = 'Hello World'; // 加密前的字符串 $td = mcrypt_module_open('rijndael-128', '', 'cbc', ''); // 初始化加密模型 $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); // 初始化随机向量 mcrypt_generic_init($td, $key, $iv); // 初始化加密 $encrypted = mcrypt_generic($td, $input); // 进行加密操作 mcrypt_generic_deinit($td); // 结束加密 mcrypt_module_close($td); // 关闭加密模型 echo "加密前的字符串: $input <br>"; echo "加密后的字符串: ".base64_encode($encrypted)."<br>"; // 输出加密结果 ?>
<?php $data = 'Hello World'; // 生成RSA公钥,并将公钥保存到public.key文件中 $res = openssl_pkey_new(); openssl_pkey_export($res, $privkey); // 生成私钥并保存 $pubkey = openssl_pkey_get_details($res); $pubkey = $pubkey["key"]; file_put_contents("public.key", $pubkey); // 使用RSA公钥加密数据 openssl_public_encrypt($data, $encrypted, $pubkey); echo "加密前的数据:$data <br>"; echo "加密后的数据:$encrypted <br>"; // 使用RSA私钥解密数据 openssl_pkey_get_private($privkey); openssl_private_decrypt($encrypted, $decrypted, $privkey); echo "解密后的数据:$decrypted <br>"; ?>2 Teknologi penyahsulitan Teknologi penyahsulitan memulihkan proses data yang disulitkan. Dalam PHP, teknologi penyahsulitan digunakan terutamanya untuk memastikan keselamatan data yang dihantar, seperti maklumat log masuk pengguna, data transaksi, dll. Teknologi penyahsulitan biasa dalam PHP adalah seperti berikut:
<?php $key = '0123456789abcdef'; // 密钥 $input = 'vO8v4zinwuL6qvtSRWdq3g=='; // 加密后的字符串 $td = mcrypt_module_open('rijndael-128', '', 'cbc', ''); // 初始化加密模型 $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); // 初始化随机向量 mcrypt_generic_init($td, $key, $iv); // 初始化加密 $decrypted = mdecrypt_generic($td, base64_decode($input)); // 进行解密操作 mcrypt_generic_deinit($td); // 结束加密 mcrypt_module_close($td); // 关闭加密模型 echo "解密前的字符串: $input <br>"; echo "解密后的字符串: $decrypted"; // 输出解密结果 ?>
<?php $data = 'Hello World'; // 使用RSA公钥加密数据 $pubkey = file_get_contents("public.key"); openssl_public_encrypt($data, $encrypted, $pubkey); echo "加密前的数据:$data <br>"; echo "加密后的数据:$encrypted <br>"; // 使用RSA私钥解密数据 $privkey = file_get_contents("private.key"); openssl_private_decrypt($encrypted, $decrypted, $privkey); echo "解密后的数据:$decrypted <br>"; ?>3 Contoh aplikasi Dalam pembangunan Web sebenar, teknologi penyulitan dan penyahsulitan adalah jaminan. cara penting keselamatan data. Berikut akan menggunakan contoh aplikasi log masuk pengguna untuk menunjukkan cara menggunakan teknologi penyulitan dan penyahsulitan untuk melindungi maklumat log masuk pengguna.
<form method="post" action="login.php"> <label>用户名:</label> <input type="text" name="username"><br> <label>密码:</label> <input type="password" name="password"><br> <input type="submit" value="登录"> </form>
<?php session_start(); $username = $_POST['username']; $password = $_POST['password']; // 数据库连接等相关代码省略 // 检查用户名和密码是否匹配 if ($username == $db_username && $password == $db_password) { // 生成加密后的用户信息 $userinfo = array( 'username' => $username, 'password' => $password ); $encrypted = base64_encode(serialize($userinfo)); // 将加密后的用户信息保存到Session中 $_SESSION['userinfo'] = $encrypted; // 登录成功,跳转到首页 header("Location: index.php"); } else { // 登录失败,返回错误消息 echo "用户名或密码错误!"; } ?>
<?php session_start(); if (isset($_SESSION['userinfo'])) { // 从Session中获取加密后的用户信息 $encrypted = $_SESSION['userinfo']; // 解密用户信息 $userinfo = unserialize(base64_decode($encrypted)); $username = $userinfo['username']; echo "欢迎您,$username!"; } else { // 用户未登录,跳转到登录页 header("Location: login.php"); } ?>Ringkasnya, teknologi penyulitan dan penyahsulitan mempunyai nilai aplikasi yang penting dalam PHP. Dalam proses pembangunan web, adalah penting untuk memastikan keselamatan data pengguna Pembangun perlu memilih teknologi penyulitan dan penyahsulitan yang sesuai berdasarkan keperluan sebenar untuk mengukuhkan keselamatan data.
Atas ialah kandungan terperinci Teknologi penyulitan dan penyahsulitan dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!