"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Puis-je migrer mon cryptage de McRypt à OpenSSL et décrypter les données cryptées McRypt à l'aide d'OpenSSL?

Puis-je migrer mon cryptage de McRypt à OpenSSL et décrypter les données cryptées McRypt à l'aide d'OpenSSL?

Publié le 2025-05-01
Parcourir:743

Can I Migrate My Encryption from Mcrypt to OpenSSL, and Decrypt Mcrypt-Encrypted Data Using OpenSSL?

Mise à niveau de ma bibliothèque de chiffrement de McRypt à OpenSSL

Puis-je mettre à niveau ma bibliothèque de cryptage à partir de McRypt à OpenSSL? Dans OpenSSL, est-il possible de décrypter les données cryptées avec McRypt? Deux articles différents fournissent des informations contradictoires.

Question: est-il possible de mettre à niveau ma bibliothèque de chiffrement de McRyppt à OpenSSL? Si oui, comment?

Réponse: Oui, il est possible de mettre à niveau votre bibliothèque de chiffrement de McRypt à OpenSSL. est possible de décrypter les données cryptées avec McRypt en utilisant OpenSSL.

Voici un exemple de code de la façon dont vous pouvez décrypter les données cryptées avec McRypt en utilisant OpenSSL:

la fonction publique décrypte ($ data, $) { $ 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)) { retourne false; } $ dec = openssl_decrypt ($ enc, $ this-> cipher, $ cipherkey, openssl_raw_data, $ iv); retour $ déc. }

Notes supplémentaires:

La fonction OpenSSL_DECRYPT () nécessite que le paramètre IV soit la même longueur que la taille du bloc de la même longueur que la taille du bloc de la taille du bloc de la taille du bloc de la taille du clip OpenSSL_DECRYPT () Fonction en mode CBC.
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);

    return $dec;
}

test:

    Le code suivant peut être utilisé pour tester la fonction decrypt ():
  • $ keys = [ «C'est une clé secrète.», 'G906M70P (IHZA5T & 5X7 (W0�31) U) �E79CIYJQ! IP2U (XT13Q6) TJ6GZ3D2WI & 0 ") 7CP5', Chr (6). Chr (200). Chr (16). «Ma clé». Chr (3). Chr (4). Chr (192). Chr (254). 'Zyx0987 !!', 'Et enfin une autre clé à tester ici:', ]] $ data = [ 'UN', «C'est un test», «Maintenant, testez le cryptage un peu plus long avec 1234567890.», '$ length = mcrypt_get_block_size (mcrypt_blowfish, mcrypt_mode_cbc); $ last = ord ($ data [strlen ($ data) - 1]); ', «Lorem ipsum Dolor Sit Amet, Consectetur adipiscing Elit. Donec Sit Amet Pharetra Urna. Vestibulum ante ipsum primis dans Faucibibus orci luctus et ultrices posuere cubilia curae; Ut Fringilla, quam sed eleifend eleifend, Justo Turpis Consectetur Tellus, Quis tristique eros erat at Nibh. Nunc dictUm neque vel diam magulestie fermetum. Pellentesque Dignissim DUI QUIS TORTOR ELEIFEND, UT Maximus Elit Egestas. Donec posuere odio et auctor porta. QUISQUE PLATERAT CONDIMUM MAXIMUS. CURABITUR LUCTUS DOLOR EGET SEM LUCTUS, dans Dignissim Tortor Vénénatis. Mauris Eget Nulla Nisl. ', ]] $ échecs = 0; foreach ($ data as $ datum) { foreach ($ touches as $ key) { $ ENC = nouveau cryptage (McRypt_Blowfish, MCRYPT_MODE_CBC); $ crypted = $ Enc-> Encrypt ($ datum, $ key); $ dec = nouveau EncryptionOpenSSL ('BF-CBC'); $ decrypted = $ dec-> Decrypt ($ crypté, $ key); if (strcmp ($ datum, $ décrypté)! == 0) { Echo "Encryption avec Key '$ key' de '$ datum' a échoué. '$ Decrypted'! = '$ datum'

    \ n \ n"; $ échecs; } } } if ($ défaillances) { Echo "$ Les tests de défaillance ont échoué.
    \ n"; } autre { Echo "All OK
    \ n"; }
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3