Maison >développement back-end >tutoriel php >Encodage de formulaire PHP : cryptage et décryptage des données du formulaire

Encodage de formulaire PHP : cryptage et décryptage des données du formulaire

PHPz
PHPzoriginal
2023-08-08 20:10:451778parcourir

Encodage de formulaire PHP : cryptage et décryptage des données du formulaire

Encodage de formulaire PHP : cryptage et décryptage des données de formulaire

Introduction :
Dans le développement Web, les formulaires sont une méthode d'interaction courante. Afin de protéger la confidentialité des utilisateurs, les données des formulaires doivent souvent être cryptées pour éviter les fuites de données. Cet article explique comment utiliser PHP pour crypter et déchiffrer les données d'un formulaire et donne des exemples de code correspondants.

1. Sélection de la méthode de cryptage
Avant de crypter les données du formulaire, nous devons choisir une méthode de cryptage appropriée. Les méthodes de chiffrement courantes incluent le chiffrement symétrique et le chiffrement asymétrique. Le chiffrement symétrique fait référence à l'utilisation de la même clé pour le chiffrement et le déchiffrement. La vitesse de chiffrement est rapide, mais il existe un problème de gestion difficile des clés ; le chiffrement asymétrique utilise le chiffrement à clé publique et le déchiffrement à clé privée, ce qui est plus sécurisé, mais il présente un problème. de difficulté dans la gestion des clés. Vitesse plus lente.

Un exemple de cryptage symétrique est donné ci-dessous, utilisant l'algorithme AES pour le cryptage et le déchiffrement.

Exemple de code 1 : Chiffrer les données du formulaire à l'aide de l'algorithme de cryptage symétrique AES

<?php
$key = 'put_your_key_here'; // 密钥,需要保密

function encrypt($data, $key)
{
    $method = 'AES-256-CBC'; // 加密算法
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
    $encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);
    return base64_encode($iv.$encrypted);
}

function decrypt($encrypted, $key)
{
    $method = 'AES-256-CBC'; // 加密算法
    $encrypted = base64_decode($encrypted);
    $length = openssl_cipher_iv_length($method);
    $iv = substr($encrypted, 0, $length);
    $data = substr($encrypted, $length);
    return openssl_decrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);
}

// 加密示例
$data = $_POST['data'];
$encrypted_data = encrypt($data, $key);
echo "加密后的数据:" . $encrypted_data;

// 解密示例
$decrypted_data = decrypt($encrypted_data, $key);
echo "解密后的数据:" . $decrypted_data;
?>

Dans l'exemple de code ci-dessus, nous définissons deux fonctions encrypt et decrypt, respectivement utilisées pour le cryptage et opérations de décryptage. La fonction encrypt utilise l'algorithme AES-256-CBC pour chiffrer et renvoie le résultat chiffré ; la fonction decrypt déchiffre les données en fonction de la clé et renvoie le résultat déchiffré. encryptdecrypt,分别用于加密和解密操作。encrypt函数使用AES-256-CBC算法进行加密,并返回加密后的结果;decrypt函数则是根据密钥对数据进行解密,返回解密结果。

在具体的例子中,我们通过$_POST超全局变量获取表单数据,然后调用encrypt函数对数据进行加密,并输出加密结果。接着,我们又调用decrypt函数对加密结果进行解密,并输出解密后的原始数据。

二、防止数据篡改
除了对表单数据进行加密之外,我们还需要考虑如何防止被篡改。常见的方法是使用哈希算法对数据进行签名或摘要,以确保数据的完整性。

下面给出一个使用HMAC-SHA256算法进行签名的示例代码。

代码示例2:使用HMAC-SHA256算法对表单数据进行签名

<?php
$key = 'put_your_key_here'; // 密钥,需要保密

function sign($data, $key)
{
    return hash_hmac('sha256', $data, $key);
}

function verify($data, $signature, $key)
{
    $computed_signature = sign($data, $key);
    return hash_equals($computed_signature, $signature);
}

// 签名示例
$data = $_POST['data'];
$signature = sign($data, $key);
echo "签名结果:" . $signature;

// 验证示例
$verified = verify($data, $signature, $key);
if ($verified) {
    echo "签名验证通过";
} else {
    echo "签名验证失败";
}
?>

在上述示例代码中,我们定义了两个函数signverify,分别用于签名和签名验证操作。sign函数使用HMAC-SHA256算法对数据进行签名,并返回签名结果;verify函数则是根据密钥对签名进行验证,返回验证结果。

在具体的例子中,我们通过$_POST超全局变量获取表单数据,然后调用sign函数对数据进行签名,并输出签名结果。接着,我们又调用verify

Dans l'exemple spécifique, nous obtenons les données du formulaire via la super variable globale $_POST, puis appelons la fonction encrypt pour crypter les données et afficher le résultat du cryptage. Ensuite, nous appelons la fonction decrypt pour déchiffrer le résultat du cryptage et afficher les données originales déchiffrées.


2. Empêcher la falsification des données

En plus de chiffrer les données du formulaire, nous devons également réfléchir à la manière d'empêcher leur falsification. Une approche courante consiste à utiliser un algorithme de hachage pour signer ou digérer les données afin de garantir leur intégrité. 🎜🎜Vous trouverez ci-dessous un exemple de code pour signer à l'aide de l'algorithme HMAC-SHA256. 🎜🎜Exemple de code 2 : utilisez l'algorithme HMAC-SHA256 pour signer les données du formulaire🎜rrreee🎜Dans l'exemple de code ci-dessus, nous définissons deux fonctions sign et verify, respectivement utilisées pour la signature et les opérations de vérification des signatures. La fonction sign utilise l'algorithme HMAC-SHA256 pour signer les données et renvoie le résultat de la signature ; la fonction verify vérifie la signature en fonction de la clé et renvoie le résultat de la vérification. 🎜🎜Dans l'exemple spécifique, nous obtenons les données du formulaire via la super variable globale $_POST, puis appelons la fonction sign pour signer les données et afficher le résultat de la signature. Ensuite, nous appelons la fonction verify pour vérifier le résultat de la signature et afficher le résultat de la vérification. 🎜🎜Résumé : 🎜Cet article explique comment utiliser PHP pour crypter et déchiffrer les données d'un formulaire, et donne des exemples de code correspondants. Pour les scénarios où la protection de la confidentialité des utilisateurs et de l’intégrité des données est cruciale, nous pouvons choisir des méthodes de cryptage et des algorithmes de signature appropriés pour protéger la sécurité des données. Il convient de noter que la confidentialité de la clé est également très importante, garantissant que seul le personnel autorisé connaît la clé. 🎜

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!

Déclaration:
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