Maison > développement back-end > tutoriel php > Comment convertir le cryptage Mcrypt en cryptage OpenSSL : un guide étape par étape

Comment convertir le cryptage Mcrypt en cryptage OpenSSL : un guide étape par étape

Patricia Arquette
Libérer: 2024-11-15 02:00:02
original
730 Les gens l'ont consulté

How to Convert Mcrypt Encryption to OpenSSL Encryption: A Step-by-Step Guide

Conversion de Mcrypt vers le cryptage OpenSSL

Mcrypt, une bibliothèque de cryptage héritée, a vu son retrait en raison de vulnérabilités de sécurité et de l'émergence d'OpenSSL en tant que norme de l'industrie. Bien que le passage de Mcrypt à OpenSSL puisse sembler intimidant, cela peut être simplifié en comprenant les principales différences et en adoptant des stratégies appropriées.

Disparité de chiffrement et de remplissage

Blowfish, le chiffrement que vous utilisez, nécessite remplissage des données pour le cryptage. OpenSSL utilise le remplissage PKCS#7, tandis que Mcrypt utilise PKCS#5. PKCS#7 nécessite une longueur de remplissage minimale de 1, tandis que PKCS#5 accepte 0. Cette différence affecte les résultats cryptés obtenus à partir de chaque bibliothèque.

Utilisation IV

En mode ECB, que vous En cas d'emploi, un vecteur d'initialisation (IV) n'est pas requis. Toutefois, ce n’est pas le cas dans les autres modes de cryptage. Assurez-vous de définir la longueur IV sur 0 lorsque vous utilisez OpenSSL pour le mode ECB.

Chiffrement et décryptage

Pour décrypter les données chiffrées avec Mcrypt à l'aide d'OpenSSL, un remplissage manuel avec PKCS#7 est requis avant le chiffrement. . Cela garantit la compatibilité entre les deux bibliothèques.

Exemple de code

Le code fourni démontre les principales différences et les techniques de remplissage appropriées :

$key = "anotherpassword1";
$str = "does it work 12";

// Mcrypt padding
$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB);

// OpenSSL padding
$enc = openssl_encrypt($str, 'bf-ecb', $key, true);

// Decrypt using both methods
$dec_mcrypt = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB);
$dec_openssl = openssl_decrypt($enc, 'bf-ecb', $key, true);

echo bin2hex($enc) . PHP_EOL;
var_dump($dec_mcrypt);
echo PHP_EOL;
var_dump($dec_openssl);
Copier après la connexion

Ce code démontre un cryptage et un déchiffrement réussis. en utilisant à la fois Mcrypt et OpenSSL, en appliquant le remplissage PKCS#7 pour la compatibilité.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal