Симметричное шифрование
Это процедура шифрования строки с помощью ключа. Ключ известен отправителю и получателю и используется в определенных алгоритмах для за- шифровывания и расшифровывания строки. Так работала машина Enigma во время второй мировой войны.
С этим типом шифрования связано много сложностей и слабостей. Главная трудность в том, чтобы обеспечить наличие ключа только у двух людей - отправителя и получателя. Если кто-то посторонний завладеет ключом и перехватит зашифрованное сообщение, то довольно легко расшифрует сообщение и узнает, какой информацией обмениваются между собой отправитель и получатель. В общем случае, однако, если можно гарантировать защиту ключа, то этот вид шифрования также вполне надежен. РНР предоставляет доступ к шифрованию этого типа через библиотеку mcrypt, обеспечивающую доступ к большому числу алгоритмов шифрования.
Наиболее распространенные алгоритмы шифрования, предоставляемые библиотекой mcrypt, перечислены ниже (табл. 23.3). Дополнительная информация есть на http://mcrypt.hellug.gr/mcrypt/mcrypt.l.html"> http://mcrypt.hellug.gr/mcrypt/mcrypt.l.html .
Допустим, например, что мы хотим зашифровать строку по алгоритму Triple DES. Это сделает следующий код:
<?php
$key = "This is pur secret key";
$string = "This is the string that we want to encrypt"; // Зашифруем нашу строку
$enсiуpted_message = mcrypt_ecb(MCRYPT_3DES, $key, {string, MCRYPT_ENCRYPT) ; f>
Для того чтобы расшифровать сообщение, надо передать строку tedjnessage и задать константу MCRYPT DECRYPT. Приведенный код работает с mcrypt версий 2.2.x и 2.4.x. Если вы имеете соответствующие полномочия и уверены, что доступ к библиотеке mcrypt 2.4.x у вас будет всегда, то рекомендуем пользоваться функциями mcrypt 2.4.x, которые предоставляют большую гибкость.
Асимметричное шифрование
Асимметричное шифрование стало доступно общественности только в последние несколько лет. Этот тип шифрования можно представить себе как висячий замок и сундук. Допустим, что у Джейн есть секретное сообщение для Алисы, Алиса посылает Джейн открытый замок. Джейн кладет сообщение в сундук и запирает его на замок, который ей прислала Алиса. Теперь только Алиса может отпереть сундук и прочесть сообщение, потому что ключ от замка есть только у нее.
Применяя асимметричное шифрование, вы раздаете всем свой открытый ключ (public key). Можно считать его открытым замком. Теперь каждый может запереть сообщение на этот замок и отправить его вам; только у вас есть секретный ключ (private key), и только вы можете открыть замок.