Maison > développement back-end > tutoriel php > Comment migrer de Mcrypt vers OpenSSL pour le cryptage des données en PHP ?

Comment migrer de Mcrypt vers OpenSSL pour le cryptage des données en PHP ?

Susan Sarandon
Libérer: 2024-11-15 16:52:03
original
456 Les gens l'ont consulté

How to Migrate from Mcrypt to OpenSSL for Data Encryption in PHP?

Implémentation d'OpenSSL à la place de Mcrypt pour le cryptage

Dans l'application PHP qui utilise actuellement Mcrypt pour le cryptage des données, il est nécessaire de le remplacer Mcrypt avec OpenSSL. L'implémentation originale utilisait le chiffrement Blowfish en mode ECB, mais le remplacement de Mcrypt par OpenSSL pose un défi en raison des différents résultats de chiffrement et des longueurs IV requises.

Comprendre les divergences

Les deux les fonctions de chiffrement, mcrypt_encrypt et openssl_encrypt, produisent des résultats différents. De plus, mcrypt nécessite un IV de 56 octets pour Blowfish-ecb, tandis que openssl utilise un IV de longueur nulle. Ces différences proviennent des différents algorithmes de remplissage utilisés par Mcrypt (PKCS#5) et OpenSSL (PKCS#7).

Résoudre les différences de chiffrement

Pour atténuer les écarts de chiffrement , le remplissage manuel des données avec le remplissage PKCS#7 est nécessaire avant le chiffrement avec mcrypt. Cela garantit la compatibilité avec l'algorithme de remplissage utilisé par OpenSSL. L'exemple suivant illustre cette approche :

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

$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB);
$dec = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB);
echo(bin2hex($enc).PHP_EOL); // Encrypted data
var_dump($dec); // Decrypted data

$enc = openssl_encrypt($str, 'bf-ecb', $key, true);
$dec = openssl_decrypt($enc, 'bf-ecb', $key, true);
echo(bin2hex($enc).PHP_EOL); // Encrypted data
var_dump($dec); // Decrypted data
Copier après la connexion

Considérations relatives à la migration

Étant donné que le déchiffrement des données chiffrées avec Mcrypt à l'aide d'OpenSSL n'est pas pratique, la seule solution consiste à rechiffrer le données. Cela représente un effort de migration important, car toutes les données précédemment chiffrées doivent être rechiffrées à l'aide d'OpenSSL.

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