Шифрование данных Mcrypt
MD5 далеко не всегда уместен. Например, он бесполезен, когда нам нужно зашифровать информацию о кредитной карте, а затем расшифровать ее. Одно из простейших решений – это модуль Mcrypt, доступный в виде РНР-расширения. Библиотека Mcrypt позволяет выполнить высокоуровневое шифрование. Mcrypt предоставляет на выбор более 30 шифров, которыми вы можете шифровать ваши данные. Для использования Mcrypt нужно перекомпилировать РНР с поддержкой Mcrypt, как это было показано в #18. Теперь поговорим об использовании Mcrypt. Следующий сценарий показывает, как использовать Mcrypt для шифрования и дешифрования данных:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php $data = "Stuff you want encrypted"; $key = "Secret passphrase used to encrypt your data"; $cipher = "MCRYPT_SERPENT_256"; $mode = "MCRYPT__M0DE_CBC"; function encrypt($data, $key, $cipher, $mode) { // Шифрование данных return (string) base64_encode ( mcrypt_encrypt ( $cipher, substr (md5 ($key) , 0,mcrypt_get_key_size ($cipher, $mode) ) , $data, $mode, substr (md5 ($key), 0, mcrypt_get_block_size ($cipher, $mode)) ) ) ; } function decrypt($data, $key, $cipher, $mode) { // Дешифрование данных return (string) mcrypt_decrypt ( $cipher, substr(md5($key),0,mcrypt_get_key_size($cipher, $mode)), base64_decode($data) , $mode, substr(md5($key),O,mcrypt_get_block_size($cipher, $mode)) ) ; } ?> |
Функции mcrypt () нужно передать следующую информацию: • Данные, которые нужно зашифровать. • Парольную фразу, необходимую для шифрования и дешифрования данных; она называется ключом. • Шифр, используемый для шифрования данных, определяющий алгоритм шифрования. В сценарии используется алгоритм MCRYPT_SERPENT_25 6, но вы можете использовать другие алгоритмы, в том числе MCRYPT_TWOFISH192, MCRYPT_RC2, MCRYPT_DES и MCRYPT_L0KI97. Примечание. Чтобы узнать, какие шифры поддерживаются вашим сервером, прочитайте п. #8. Если расширение Mcrypt установлено, то в выводе phpinfо() в секциях Supported Cipher и Supported Modes вы увидите список поддерживаемых шифров и режимов, соответственно. • Режим (параметр mode) используется для шифрования данных. Вы можете использовать несколько режимов, в том числе Electronic Codebook и Cipher Feedback. Данный сценарий использует Cipher Block Chaining – MCRYPT_MODE_CBC. • Вектор инициализации, также известен как IV, или seed – дополнительный бит бинарных данных, используемый алгоритмом шифрования. Вектор инициализации делает шифр более сложным для расшифровки. • Длину строки, необходимой для ключа и IV, которая может варьироваться шифром и блоком. Используйте функции mcrypt_get_key__size () и mcrypt_get_block_size () для нахождения соответствующей длины. Затем […]
Read more