Симметричное шифрование появилось самым первым. Для шифрования данных используется ключ, который служит и для дешифровки данных. Рассмотрим этот способ шифрования данных подробнее.
Самый простой вариант зашифровать строку — выполнить логическую операцию XOR над данными и ключом. Для расшифровки требуется повторить операцию.
Какой бы сложный алгоритм вы ни использовали, у симметричного шифрования есть несколько очень серьезных недостатков:
1) Один ключ используется для шифрования и дешифрования. Таким образом, отправитель и получатель зашифрованных данных должны обладать одним и тем же ключом. А как обменяться ключами через Интернет, когда эта связь открытая? Допустим, что вы хотите пообщаться со своим другом из другого города по электронной почте, не боясь, что кто-то подсмотрит вашу переписку. Один из вас должен придумать или сгенерировать ключ, с помощью которого будет происходить шифрование, и выслать через e-mail своему корреспонденту. Если ключ не был перехвачен, то последующие зашифрованные сообщения можно считать более-менее закрытыми, но если письмо с ключом было перехвачено, то шифрование становится бессмысленным.
2) Хакеры утверждают (и этому достаточно исторических подтверждений), что информация, известная двоим, может стать доступной всем. Есть много способов получения нужной информации с помощью социальной инженерии.
И все же, симметричному шифрованию можно найти множество эффективных применений. Например, шифрование данных на сервере. Допустим, что необходимо зашифровать какой-либо документ, чтобы хакер, взломав сервер, не смог увидеть его содержимое. Документ не будет передаваться по сети, а значит, никому не нужно отдавать ключ, поэтому перехватить его не удастся.
К наиболее распространенным алгоритмам симметричного шифрования относятся DES, 3DES, Blowfish, CAST 128 и т. д. Самый простой способ зашифровать данные — воспользоваться функцией mcrypt_ecb (), которая принимает четыре параметра:
• константу, указывающую на алгоритм. Интерпретатор РНР для шифрования использует библиотеку libmcrypt, которая поддерживает большое количество алгоритмов, поэтому рассматривать их все нет смысла, но основные константы знать необходимо:
• MCRYPT_DES — алгоритм DES;
• MCRYPT_3DES — алгоритм 3DES;
• MCRYPT_BLOWFISH — алгоритм Blowfish;
• MCRYPT_CAST128 — алгоритм Castl28;
• MCRYPT_CAST256 — алгоритм Cast256;
• ключ;
• данные для шифрования;
• режим. Здесь можно указать одно из двух значений:
• MCRYPT_ENCRYPT — зашифровать данные;
• MCRYPT_DECRYPT — расшифровать.
Рассмотрим простейший пример шифрования по алгоритму DES:
<?php $кеу="это КЛЮЧ"; $text="Сообщение, которое должно быть зашифровано"; $str=mcrypt_ecb(MCRYPT_DES, $key, $text, MCRYPT_ENCRYPT); ?>
В результате в переменной $str будет сохранен зашифрованный текст нз переменной $text. Чтобы расшифровать данные, нужно использовать тот же ключ и ту же функцию, но в качестве третьего параметра передать зашифрованный текст, а в качестве последнего — константу MCRYPT_DECRYPT:
<?php $decrypted_str=mcrypt_ecb(MCRYPT_DES, $key, $str, MCRYPT_DECRYPT); ?>
Comments ( 0 )