Maison > développement back-end > tutoriel php > Technologie de cryptage et de décryptage en PHP

Technologie de cryptage et de décryptage en PHP

王林
Libérer: 2023-05-11 08:08:01
original
2436 Les gens l'ont consulté

PHP est un langage de développement Web largement utilisé et sa technologie de cryptage et de déchiffrement revêt une grande importance pour la sécurité des données. Cet article présentera la technologie de cryptage et de déchiffrement en PHP et explorera son application pratique dans les applications Web.

1. Technologie de cryptage

La technologie de cryptage est un processus de conversion de texte ordinaire en texte crypté. En PHP, la technologie de cryptage est principalement utilisée pour assurer la sécurité des données transmises, telles que les informations de connexion des utilisateurs, les données de transaction, etc. Les technologies de cryptage courantes en PHP sont les suivantes :

  1. Le cryptage par hachage

Le cryptage par hachage consiste à convertir une entrée de n'importe quelle longueur (également appelée message) en une sortie de longueur fixe via un algorithme spécifique. Cet algorithme satisfait aux deux éléments suivants. Conditions :

a. Pour la même entrée, l'algorithme doit s'assurer que la sortie est la même ;
b Pour différentes entrées, l'algorithme doit s'assurer que la sortie est différente.

Les fonctions de cryptage de hachage couramment utilisées en PHP incluent md5(), sha1(), etc. La fonction md5() convertit une chaîne d'entrée de n'importe quelle longueur en une sortie de 128 bits et la renvoie sous forme de chaîne hexadécimale de 32 bits.

Par exemple, le code suivant peut convertir la chaîne « Hello World » en une chaîne cryptée :

<?php
$orig_str = "Hello World";
$encrypted_str = md5($orig_str);
echo "加密前的字符串:$orig_str <br>";
echo "加密后的字符串:$encrypted_str";
?>
Copier après la connexion
  1. Cryptage symétrique

Le cryptage symétrique est une technologie de cryptage qui utilise la même clé pour crypter et déchiffrer les données. En PHP, utilisez la fonction mcrypt() pour effectuer des opérations de chiffrement symétriques. mcrypt() utilise des algorithmes de chiffrement très courants, tels que DES, TripleDES, Blowfish, AES, etc.

Le code ci-dessous montre comment utiliser la fonction mcrypt() pour le cryptage symétrique :

<?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>"; // 输出加密结果
?>
Copier après la connexion
  1. Cryptage asymétrique

Le cryptage asymétrique est un algorithme qui utilise différentes clés pour le cryptage et le déchiffrement. L'algorithme de chiffrement asymétrique couramment utilisé en PHP est RSA. Lors de l'utilisation de l'algorithme RSA pour le cryptage et le déchiffrement, deux clés, la clé publique et la clé privée, sont requises. Généralement, la clé publique est publique, tandis que la clé privée n'est connue que du détenteur.

Le code suivant démontre l'utilisation de l'algorithme RSA pour le cryptage et le décryptage en PHP :

<?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>";
?>
Copier après la connexion

2. Technologie de décryptage

La technologie de décryptage est le processus de restauration des données cryptées. En PHP, la technologie de décryptage est principalement utilisée pour assurer la sécurité des données transmises, telles que les informations de connexion des utilisateurs, les données de transaction, etc. Les technologies de décryptage courantes en PHP sont les suivantes :

  1. Décryptage de hachage

Le cryptage de hachage est une technologie de cryptage irréversible et ne peut pas être déchiffré.

  1. Déchiffrement symétrique

Le décryptage symétrique est une technologie de cryptage qui utilise la même clé pour décrypter les données. En PHP, utilisez la fonction mcrypt() pour effectuer des opérations de décryptage symétrique.

Le code suivant montre comment utiliser la fonction mcrypt() pour le déchiffrement symétrique :

<?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"; // 输出解密结果
?>
Copier après la connexion
  1. Déchiffrement asymétrique

Le déchiffrement asymétrique est un algorithme qui utilise différentes clés pour le cryptage et le déchiffrement. En PHP, l’algorithme de décryptage asymétrique couramment utilisé est RSA.

Le code suivant démontre l'utilisation de l'algorithme RSA pour le décryptage en PHP :

<?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>";
?>
Copier après la connexion

3. Exemples d'application

Dans le développement Web réel, la technologie de cryptage et de décryptage est un moyen important pour assurer la sécurité des données. Ce qui suit utilisera un exemple d'application de connexion utilisateur pour démontrer comment utiliser la technologie de cryptage et de déchiffrement pour protéger les informations de connexion utilisateur.

  1. Formulaire frontal

Dans la page front-end, vous devez créer un formulaire pour obtenir les informations de connexion de l'utilisateur. Le formulaire contient deux zones de saisie pour le nom d'utilisateur et le mot de passe :

<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>
Copier après la connexion
  1. Vérification de connexion backend

Dans le code PHP, le nom d'utilisateur et le mot de passe saisis par l'utilisateur doivent être vérifiés. Si la vérification est réussie, les informations cryptées de l'utilisateur peuvent être stockées dans la session pour être utilisées sur les pages suivantes.

<?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 "用户名或密码错误!";
}
?>
Copier après la connexion
  1. Page d'accueil du backend

Dans la page d'accueil du backend, vous devez déchiffrer les informations utilisateur cryptées enregistrées dans la session et afficher le nom d'utilisateur et d'autres informations.

<?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");
}
?>
Copier après la connexion

En résumé, la technologie de cryptage et de décryptage a une valeur applicative importante en PHP. Dans le processus de développement Web, il est crucial d'assurer la sécurité des données des utilisateurs. Les développeurs doivent choisir des technologies de cryptage et de décryptage appropriées en fonction des besoins réels pour renforcer la sécurité des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal