В сфере разработки PHP расширение mcrypt когда-то было важнейшим инструментом для шифрования данных.
Предлагая широкий спектр алгоритмов, mcrypt был идеальным решением для многих разработчиков, желающих защитить данные в пути или в состоянии покоя.
Но что именно представлял собой mcrypt и почему он потерял популярность в сообществе PHP?
Суть Mcrypt: Инструмент для шифрования данных
Mcrypt предоставлял разработчикам PHP широкий спектр алгоритмов шифрования, включая такие известные, как DES, TripleDES и Blowfish.
Его способность поддерживать различные режимы работы, такие как CBC, CFB и OFB, добавила ему универсальности.
Такая гибкость делает mcrypt ценным активом в наборе инструментов разработчика для реализации шифрования данных в PHP-приложениях.
Отход от Mcrypt: История об устаревании и удалении
Однако ландшафт PHP-шифрования претерпел значительные изменения с выходом из поддержки mcrypt в PHP 7.1 и его последующим удалением в PHP 7.2.
Это решение было обусловлено несколькими факторами, ключевыми из которых являются отсутствие активного сопровождения и появление более современных, безопасных альтернатив.
Отсутствие активного сопровождающего расширения mcrypt вызывало опасения по поводу его способности оставаться в курсе последних достижений в области безопасности и стандартов шифрования.
<?php
// Sample mcrypt usage in PHP (for educational purposes)
// The key should be random binary, use scrypt, bcrypt or PBKDF2 to
// convert a string into a key
// Key is specified using hexadecimal
$key = pack('H*', "0123456789abcdef0123456789abcdef");
// Show key size
echo "Key size: " . mcrypt_get_key_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC) . "\n";
$plaintext = "This is a test text.";
// Create a random IV to use with CBC encoding
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
// Encrypts the text
$ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key,
$plaintext, MCRYPT_MODE_CBC, $iv);
// The IV is just as important as the key for decrypting, so save it with the encrypted data
$ciphertext = $iv . $ciphertext;
// Decrypts the text
$iv_dec = substr($ciphertext, 0, $iv_size);
$ciphertext_dec = substr($ciphertext, $iv_size);
$plaintext_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key,
$ciphertext_dec, MCRYPT_MODE_CBC, $iv_dec);
// Output
echo "Encrypted: " . $ciphertext . "\n";
echo "Decrypted: " . rtrim($plaintext_dec, "\0") . "\n";
?>
Обращение к современным альтернативам: Эпоха после mcrypt
Вслед за выходом mcrypt из употребления сообщество PHP переключилось на более современные и безопасные библиотеки для шифрования.
OpenSSL и Sodium являются одними из рекомендуемых альтернатив, предлагая более надежный профиль безопасности и активную поддержку.
Эти современные библиотеки не только более безопасны, но и лучше согласуются с развивающимися стандартами шифрования в технологической индустрии.
Наследие и переходный период: Постоянная актуальность Mcrypt
Несмотря на свое устаревание, mcrypt все еще встречается в старых PHP-проектах.
Разработчики, работающие над такими проектами, сталкиваются с необходимостью перехода на новые методы шифрования для обеспечения большей безопасности и соответствия современным стандартам.
Этот переход, хотя и является необходимым, подчеркивает динамичный характер веб-разработки и постоянную необходимость адаптации.
см. также:
- 🛡️ Полное шифрование диска (FDE) на Windows: BitLocker и альтернативы
- 🔐 Практическое руководство по GPG: Шифрование и расшифровка файлов
- 🔐 Шифрование дисков с помощью Network Based Key Services (NBDE)
- 🔐 Шифрование USB-накопителя с помощью Linux
- 🐧 Как проверить шифрование TLS / SSL в любом месте на любом порту





