Аргерих Л. О языке РНР. Часть 5. Страница 79


Симметричное шифрование

Это процедура шифрования строки с помощью ключа. Ключ известен отпра­вителю и получателю и используется в определенных алгоритмах для за- шифровывания и расшифровывания строки. Так работала машина Enigma во время второй мировой войны.

С этим типом шифрования связано много сложностей и слабостей. Главная трудность в том, чтобы обеспечить наличие ключа только у двух людей - от­правителя и получателя. Если кто-то посторонний завладеет ключом и пере­хватит зашифрованное сообщение, то довольно легко расшифрует сообще­ние и узнает, какой информацией обмениваются между собой отправитель и получатель. В общем случае, однако, если можно гарантировать защиту ключа, то этот вид шифрования также вполне надежен. РНР предоставляет доступ к шифрованию этого типа через библиотеку mcrypt, обеспечиваю­щую доступ к большому числу алгоритмов шифрования.

Наиболее распространенные алгоритмы шифрования, предоставляемые биб­лиотекой mcrypt, перечислены ниже (табл. 23.3). Дополнительная инфор­мация есть на http://mcrypt.hellug.gr/mcrypt/mcrypt.l.html"> http://mcrypt.hellug.gr/mcrypt/mcrypt.l.html .

Допустим, например, что мы хотим зашифровать строку по алгоритму Trip­le 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), и только вы можете открыть замок.