Maison > développement back-end > tutoriel php > Comment migrer de Mcrypt vers OpenSSL pour Blowfish Encryption ?

Comment migrer de Mcrypt vers OpenSSL pour Blowfish Encryption ?

Linda Hamilton
Libérer: 2024-12-08 14:59:11
original
409 Les gens l'ont consulté

How to Migrate from Mcrypt to OpenSSL for Blowfish Encryption?

Migration de Mcrypt vers OpenSSL

Votre implémentation actuelle utilise Mcrypt pour le chiffrement, mais vous envisagez de passer à OpenSSL. Le chiffre Blowfish de Mcrypt en mode ECB présente des différences par rapport à OpenSSL, telles que l'exigence d'une longueur IV de 56 pour Mcrypt et de 0 pour OpenSSL.

Pour migrer les modules de manière transparente :

  • Comprendre la différence de remplissage :

    • Mcrypt utilise Rembourrage PKCS#5, tandis qu'OpenSSL utilise PKCS#7. Assurez un remplissage cohérent lors du chiffrement des données.
  • Remplissage manuel :

    • Étant donné qu'OpenSSL utilise PKCS#7, vous devez manuellement compléter les données avant de les chiffrer avec Mcrypt. Cela implique d'ajouter « 1 » aux données.
  • Initialisation IV :

    • Le mode ECB n'utilise pas IV. Par conséquent, lorsque vous utilisez ECB avec OpenSSL, votre code doit supprimer l'initialisation IV.
  • Considérations sur la longueur de clé :

    • Mcrypt prend en charge des tailles de clé jusqu'à 56 octets, alors qu'OpenSSL n'a pas de limite de taille de clé. Ajustez la taille de votre clé en conséquence.
  • Rechiffrement :

    • Pour garantir la compatibilité, pensez à rechiffrer votre clé existante. Données cryptées par Mcrypt à l'aide d'OpenSSL. Cela élimine toute divergence due aux différents algorithmes de remplissage.

Exemple de code :

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

// MCRYPT with PKCS#7 padding
$iv = str_repeat("", 8); // Dummy IV for ECB
$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB, $iv);

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

// Decrypt with OpenSSL (requires re-encryption)
// $dec = openssl_decrypt($enc, 'bf-ecb', $key, true);
// echo var_dump($dec);
Copier après la connexion

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