Maison > développement back-end > tutoriel php > OpenSSL peut-il décrypter les données cryptées avec Mcrypt ?

OpenSSL peut-il décrypter les données cryptées avec Mcrypt ?

Patricia Arquette
Libérer: 2024-12-02 04:08:15
original
989 Les gens l'ont consulté

Can OpenSSL Decrypt Data Encrypted with Mcrypt?

Mise à niveau de ma bibliothèque de chiffrement de Mcrypt vers OpenSSL

Est-ce réalisable ?

La compatibilité de Mcrypt avec OpenSSL est un sujet de débat. Certaines sources affirment qu'OpenSSL ne peut pas déchiffrer les données chiffrées à l'aide de Mcrypt, tandis que d'autres suggèrent que cela est possible avec l'utilisation du remplissage.

[Post 1](https://stackoverflow.com/a/19748494/ 5834657) indique que le décryptage est impossible, tandis que [Post 2](https://stackoverflow.com/a/31614770/5834657) suggère que cela est réalisable avec le bon rembourrage. Cependant, l'exemple de remplissage fourni dans l'article est spécifiquement destiné à Mcrypt et peut ne pas être applicable à OpenSSL.

Tentative avec une nouvelle bibliothèque

Pour tester la compatibilité, nous avons modifié le code Mcrypt existant pour utilisez OpenSSL. La fonction de décryptage modifiée se lit comme suit :

public function decrypt($data, $key) {
    $salt = substr($data, 0, 128);
    $enc = substr($data, 128, -64);
    $mac = substr($data, -64);

    list ($cipherKey, $macKey, $iv) = $this->getKeys($salt, $key);

    if ($mac !== hash_hmac('sha512', $enc, $macKey, true)) {
         return false;
    }

    $dec = openssl_decrypt($enc, $this->cipher, $cipherKey, OPENSSL_RAW_DATA, $iv);

    $data = $this->unpad($dec);

    return $data;
}
Copier après la connexion

Nous avons testé ce code modifié en chiffrant une chaîne avec la bibliothèque Mcrypt, puis en essayant de la déchiffrer à l'aide de notre code basé sur OpenSSL. Cependant, nous n’avons reçu qu’une réponse vide. L'erreur semble provenir de la ligne $data = $this->unpad($dec). Lorsque nous avons commenté cette ligne, nous avons obtenu une chaîne confuse ressemblant au format crypté d'origine.

Conclusion

Malheureusement, notre tentative de déchiffrement des données cryptées par Mcrypt à l'aide d'OpenSSL a échoué. Il est possible que le remplissage spécifique utilisé par Mcrypt ne soit pas compatible avec OpenSSL, ou qu'il puisse y avoir d'autres incompatibilités sous-jacentes qui empêchent le décryptage réussi.

Une enquête plus approfondie est nécessaire pour déterminer s'il est vraiment impossible de déchiffrer les données chiffrées par Mcrypt. données avec OpenSSL, ou s'il existe une solution de contournement qui n'a pas encore été découverte.

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