Maison  >  Article  >  développement back-end  >  Comment implémenter le cryptage et le décryptage des informations en PHP

Comment implémenter le cryptage et le décryptage des informations en PHP

WBOY
WBOYoriginal
2023-06-18 10:10:392805parcourir

Avec le développement rapide des technologies de l'information, le cryptage et le décryptage des informations sont progressivement devenus aujourd'hui l'un des moyens importants de protection des informations numériques. En tant que langage de programmation largement utilisé dans le domaine du développement Web, la méthode PHP de cryptage et de décryptage des informations est également devenue très importante.

Dans cet article, je présenterai plusieurs méthodes pour implémenter le cryptage et le décryptage des informations en PHP.

1. Utilisez les propres fonctions de cryptage de PHP

En PHP, nous pouvons utiliser une série de fonctions de cryptage intégrées pour crypter et déchiffrer les données. Ces fonctions incluent md5(), sha1(), base64_encode(), base64_decode(), etc.

Tout d'abord, nous sélectionnons les fonctions base64_encode() et base64_decode() pour la démonstration. Ils peuvent convertir les données en un ensemble de chaînes composées de caractères A-Z, a-z, 0-9, +, / et restaurer les données originales après décryptage.

Le code d'implémentation spécifique est le suivant :

//加密函数
function encrypt($data){
    $data = base64_encode($data);
    return $data;
}

//解密函数
function decrypt($data){
    $data = base64_decode($data);
    return $data;
}

Grâce à ces deux fonctions, nous pouvons réaliser un cryptage et un décryptage simples des données. Cependant, il convient de noter que cette méthode n’est pas très sécurisée car elle peut être facilement forcée.

2. Utiliser un algorithme de cryptage symétrique

L'algorithme de cryptage symétrique est un algorithme qui utilise la même clé pour crypter et déchiffrer les données. Les algorithmes de cryptage symétriques courants incluent DES, AES, etc.

En PHP, nous pouvons utiliser la bibliothèque mcrypt ou l'extension openssl pour implémenter des algorithmes de chiffrement symétriques.

Nous prenons l'algorithme AES comme exemple pour montrer comment implémenter l'algorithme de chiffrement symétrique. Le code d'implémentation spécifique est le suivant :

$key = '1234567890123456'; //密钥
$plaintext = 'Hello, world!'; //原始明文数据

//加密
$ciphertext = openssl_encrypt($plaintext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, '1234567890123456');
$ciphertext = base64_encode($ciphertext);

//解密
$ciphertext = base64_decode($ciphertext);
$plaintext = openssl_decrypt($ciphertext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, '1234567890123456');

Parmi eux, $key est la clé et $plaintext sont les données originales en texte brut. Le chiffrement utilise la fonction openssl_encrypt() et le déchiffrement utilise la fonction openssl_decrypt().

Il est important de noter que le choix de l'algorithme de cryptage doit être basé sur la situation réelle. Si vous envisagez une méthode de cryptage plus sécurisée, vous pouvez choisir l'algorithme AES-256, mais la vitesse de cryptage sera relativement plus lente.

3. Utiliser un algorithme de cryptage asymétrique

L'algorithme de cryptage asymétrique est un algorithme qui utilise une paire de clés (clé publique et clé privée) pour crypter et déchiffrer les données. L'algorithme de cryptage asymétrique courant est RSA.

En PHP, nous pouvons utiliser l'extension openssl pour implémenter un algorithme de chiffrement asymétrique.

Nous prenons l'algorithme RSA comme exemple pour montrer la méthode de mise en œuvre de l'algorithme de chiffrement asymétrique. Le code d'implémentation spécifique est le suivant :

$private_key = <<<EOD
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQC7C1DJoA4vf6Z+/gwTt3eOjQqi7odXbVf/eKeTX2YVi2wS+Z02
Jbcm8+pkuGZDNxXgO89qr13ytGWUhcSy2t/hRMmLjAdEIiCU8a9VcdDsk1Bgz4Ir
qKLj84XdT3pc5N9yMSsEItvqn31ro7/5nDdzRJAsWH6xd220EaJLZL7/hwIDAQAB
AoGBAIJc3cZhytX5jni/jdDa7+keAwDTbLsPAx1pyJvZbIZ26v8f8cxVgCD1yJ0+
Fm6fi/BTcCfi5UOD6ClIdYxQ9ZsHkhDkU+z8r114kguNziHkrm2kR/ijXmYdNDaU
Y9jNtRjvMHOQWfj+ym9p2jKJd/wYG1TodY5AVMJeSLvjo/7RAkEA/6je8XnhVADo
xMGs/eJ80AYEVo11+6PjxVVqivJ0O0l8DNd+4ih+U2ohjvQEjBpfcUGWx+cpxhR8
iE5TgrPXswJBANg/xhNhMNqL4DsXdc0y37n68QAVR/+SNYkipUZqHSIqe6LH4db/
H09kWeZJQ4ArtiIwgl5Q5dgngnAubdVreRUCQDXN287lEns+hIn7GUYWCO5V4fND
WbM8K02UaO+qutglLrbzIlLa6+IjYb+7p8adR/K66QiLJe6UdMze3/Nlzi0CQQCV
Xa5m6m1Q7lfALG53u0dvpVx3JmIEPZvfYh8onMyODFfF4PPFNZwgIjlbSRVTFxJ1
hW2PWF1EBbJ2vEI7tWnBAkEAt0LnrmfkApmwhPiEKzjvezUnTeqWcZaImp7uZ8V7
av2Q43WTXNQeKAzI4ItZHvEKtN0Xrnvah7NiW7K7ZQA25w==
-----END RSA PRIVATE KEY-----
EOD;

$public_key = <<<EOD
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7C1DJoA4vf6Z+/gwTt3eOjQqi
7odXbVf/eKeTX2YVi2wS+Z02Jbcm8+pkuGZDNxXgO89qr13ytGWUhcSy2t/hRMmL
jAdEIiCU8a9VcdDsk1Bgz4IrqKLj84XdT3pc5N9yMSsEItvqn31ro7/5nDdzRJAs
WH6xd220EaJLZL7/hwIDAQAB
-----END PUBLIC KEY-----
EOD;

$plaintext = 'Hello, world!';

//私钥加密
openssl_private_encrypt($plaintext, $ciphertext, $private_key);
$ciphertext = base64_encode($ciphertext);

//公钥解密
$ciphertext = base64_decode($ciphertext);
openssl_public_decrypt($ciphertext, $plaintext, $public_key);

Parmi eux, $private_key est la clé privée, $public_key est la clé publique et $plaintext est les données originales en texte brut. Le chiffrement utilise la fonction openssl_private_encrypt() et le déchiffrement utilise la fonction openssl_public_decrypt().

Il convient de noter que la vitesse de cryptage de l'algorithme RSA est lente, il n'est donc pas adapté au cryptage de grandes quantités de données. Dans les applications pratiques, nous pouvons utiliser une combinaison d'algorithmes de chiffrement symétriques et d'algorithmes de chiffrement asymétriques. Utilisez d'abord l'algorithme de chiffrement symétrique pour chiffrer les données, puis utilisez l'algorithme de chiffrement asymétrique pour chiffrer la clé utilisée par l'algorithme de chiffrement symétrique.

Pour résumer, voici plusieurs méthodes pour crypter et déchiffrer les informations en PHP. Dans les applications pratiques, nous devons réfléchir à la méthode de cryptage à choisir en fonction des besoins réels et de la sécurité.

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