«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Могу ли я перенести свой шифрование с McRypt в OpenSSL и расшифровывает данные, заполненные McRypt, используя OpenSSL?

Могу ли я перенести свой шифрование с McRypt в OpenSSL и расшифровывает данные, заполненные McRypt, используя OpenSSL?

Опубликовано в 2025-04-30
Просматривать:504

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

Обновление моей библиотеки шифрования с McRypt до OpenSSL

Могу ли я обновить свою библиотеку шифрования с McRypt до OpenSSL? В OpenSSL можно ли расшифровать данные, зашифрованные с McRypt? Два разных сообщения предоставляют противоречивую информацию.

вопрос: можно ли обновить мою библиотеку шифрования от McRypt до OpenSSL? Если да, то как?

answer: yes, можно обновить библиотеку шифрования от McRypt до OpenSsl.

Вопрос: can I Decrypt Data Sincrypted McRypt, используя openssl? Чтобы расшифровать данные, зашифрованные с помощью McRypt с использованием OpenSsl.

здесь пример кода того, как вы можете расшифровать данные, зашифрованные с помощью McRypt, используя OpenSSL:

публичная функция Decrypt ($ data, $ key) {&&? $ salt = substr ($ data, 0, 128); $ enc = substr ($ data, 128, -64); $ mac = substr ($ data, -64); список ($ cipherkey, $ mackey, $ iv) = $ this-> getKeys ($ salt, $ key); if ($ mac! == hash_hmac ('sha512', $ enc, $ mackey, true)) { вернуть ложь; } $ dec = openssl_decrypt ($ enc, $ this-> cipher, $ cipherkey, openssl_raw_data, $ iv); вернуть $ dec; } ]

Дополнительные примечания:
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;
}

] функция openssl_decrypt () требует, чтобы параметр IV был такой же длиной, что и размер блока, используемый шифром. openssl_decrypt () функция в режиме CBC.

  • test:
  • . Следующий код можно использовать для тестирования функции Decrypt ()

$] [ «Это секретный ключ», 'G906M70P (IHZA5T & 5X7 (W0�31) U) �E79CIYJQ! IP2U (XT13Q6) TJ6GZ3D2WI & 0 ") 7CP5', Chr (6). Chr (200). Chr (16). «Мой ключ». Chr (3). Chr (4). Chr (192). Chr (254). 'Zyx0987 !!', 'И, наконец, еще один ключ, чтобы проверить здесь:', ]; $ data = [ 'A', «Это тест», «Теперь тестируйте шифрование чего -то немного дольше с 1234567890». '$ length = mcrypt_get_block_size (mcrypt_blowfish, mcrypt_mode_cbc); $ last = ord ($ data [strlen ($ data) - 1]); ', 'Lorem Ipsum Dolor Sit Amet, Adipiscing Elit. Donec Sit Amet Pharetra Urna. Весенбул ипсум primis в сфере Faucibus oructus et ultrices posuere cubilia curae; UT Fringilla, Quam Sed Eleifend Eleifend, Юсто Турпис -Консектур Tellus, Quis Tristique Eros Erat в Nibh. NUNC DICTUM NEQUE VEL DIAM RALESTIE FERMENTUM. Pellentesque Dignissim dui Quis Tortor Eleifend, UT Maximus Elit Egestas. Donec Posuere Odio et auctor porta. Квинк -Placerat Condimentum Maximus. Curabitur Luctus Dolor Eget Sem Luctus, в Dignissim Tortor Venenatis. Маврис Эйт Nulla Nisl. ', ]; $ неудачи = 0; foreach ($ data as $ datum) { foreach ($ keys as $ key) { $ enc = новое шифрование (mcrypt_blowfish, mcrypt_mode_cbc); $ incrypted = $ enc-> incrypt ($ datum, $ key); $ dec = new EncryptionOpenssl ('bf-cbc'); $ decrypted = $ dec-> decrypt ($ зашифровано, $ key); if (strcmp ($ datum, $ decrypted)! == 0) { Echo "шифрование с ключом '$ key' of $ datum 'не удалось. $ неудачи; } } } if ($ неудачи) { Echo "$ неудачи не удалились.
\ n"; } еще { Эхо "Все в порядке
\ n"; } ]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3