Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Функции PHP
 
 

Функции шифрования Mcrypt

Введение

Это интерфейс с библиотекой mcrypt, который поддерживает широкий набор алгоритмов, таких как DES, TripleDES, Blowfish (по умолчанию), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 и режимов шифровки GOST в CBC, OFB, CFB и ECB. Дополнительно он поддерживает RC6 и IDEA, которые считаются "non-free".

Mcrypt можно использовать для шифровки и дешифровки вышеприведёнными шифрами. Если вы связались с библиотекой libmcrypt-2.2.x, четыре важные команды mcrypt (mcrypt_cfb(), mcrypt_cbc(), mcrypt_ecb() и mcrypt_ofb()) могут оперировать в двух режимах, которые называются MCRYPT_ENCRYPT и MCRYPT_DECRYPT, соответственно.

Требования

Данные функции работают с использованием mcrypt. Загрузите libmcrypt-x.x.tar.gz с http://mcrypt.sourceforge.net/ и следуйте вложенным в установочный пакет инструкциям.

Пользователи Windows найдут все необходимые скомпилированные библиотеки mcrypt на сайте http://ftp.emini.dk/pub/php/win32/mcrypt/.

PHP 5.0.0 требует библиотеку libmcrypt версии 2.5.6 или выше.

В libmcrypt 2.4.x и выше поддерживаются следующие дополнительные блоки алгоритмов: CAST, LOKI97, RIJNDAEL, SAFERPLUS, SERPENT и следующие потоковые шифры: ENIGMA (crypt), PANAMA, RC4 и WAKE. В libmcrypt 2.4.x и выше поддерживают дополнительно другой шифр - nOFB.

Установка

Вам необходимо иметь PHP, скомпилированный с опцией --with-mcrypt[=DIR] . DIR - это установочная директория mcrypt. Убедитесь в скомпилированной libmcrypt с опцией --disable-posix-threads.

Пример 1. Шифровка input-значения шифром TripleDES под 2.2.x в режиме ECB

<?php
$key 
"this is a secret key";
$input "Let us meet at 9 o'clock at the secret place.";

$encrypted_data mcrypt_ecb (MCRYPT_3DES$key$inputMCRYPT_ENCRYPT);
?>

Это пример даст данные, зашифрованные как строка в $encrypted_data.

Если связаны с библиотекой libmcrypt 2.4.x или 2.5.x, эти функции также будут доступны, но рекомендуется использовать продвинутые функции.

Пример 2. Шифровка input-значения шифром TripleDES под 2.4.x и выше в режиме ECB

<?php
    $key 
"this is a secret key";
    
$input "Let us meet at 9 o'clock at the secret place.";

    
$td mcrypt_module_open('tripledes''''ecb''');
    
$iv mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    
mcrypt_generic_init($td$key$iv);
    
$encrypted_data mcrypt_generic($td$input);
    
mcrypt_generic_deinit($td);
    
mcrypt_module_close($td);
?>

Это пример даст данные, зашифрованные как строка в$encrypted_data. Полный пример см. в описании mcrypt_module_open().

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Mcrypt может работать с четырьмя режимами шифровки (CBC, OFB, CFB и ECB). Если связь имеется с библиотекой libmcrypt-2.4.x или выше, эти функции могут также работать с блок-режимом шифровки nOFB и в режиме STREAM. Ниже вы найдёте список всех поддерживаемых режимов шифровки с константами, определёнными для данного режима. Более полную справку и обсуждение вы найдёте в Applied Cryptography by Schneier (ISBN 0-471-11709-9).

  • MCRYPT_MODE_ECB (electronic codebook/электронная кодовая книга) подходит для произвольных данных, таких как шифрование других ключей. Поскольку данные здесь случайны и кратки, недостатки ECB имеют положительный побочный эффект.

  • MCRYPT_MODE_CBC (cipher block chaining) специально предназначен для шифрования файлов; безопасность значительно выше, чем у ECB.

  • MCRYPT_MODE_CFB (cipher feedback) - наилучший режим для шифровки байтовых потоков, где должны шифроваться отдельные байты.

  • MCRYPT_MODE_OFB (output feedback, в 8bit) сравним с CFB, но используется в приложениях, где недопустима передача ошибок. Небезопасен (поскольку работает в 8-битном режиме), поэтому использовать его не рекомендуется.

  • MCRYPT_MODE_NOFB (output feedback, в nbit) сравним с OFB, но более безопасен, поскольку оперирует с размером блоков по алгоритму.

  • MCRYPT_MODE_STREAM - дополнительный режим для включения алгоритмов потока вроде WAKE или RC4.

Вот список шифров, которые в настоящее время поддерживаются расширением mcrypt. Полны список см. в определениях в конце файла mcrypt.h. Общее правило для mcrypt-2.2.x API таково: вы можете получить доступ к шифру из PHP с помощью MCRYPT_ciphername. С libmcrypt-2.4.x и libmcrypt-2.5.x API эти константы также работают, но можно специфицировать имя шифра как строку с вызовом mcrypt_module_open().

  • MCRYPT_3DES

  • MCRYPT_ARCFOUR_IV (только libmcrypt > 2.4.x)

  • MCRYPT_ARCFOUR (только libmcrypt > 2.4.x)

  • MCRYPT_BLOWFISH

  • MCRYPT_CAST_128

  • MCRYPT_CAST_256

  • MCRYPT_CRYPT

  • MCRYPT_DES

  • MCRYPT_DES_COMPAT (только libmcrypt > 2.2.x)

  • MCRYPT_ENIGMA (только libmcrypt > 2.4.x, псевдоним для MCRYPT_CRYPT)

  • MCRYPT_GOST

  • MCRYPT_IDEA (non-free/не свободный ресурс)

  • MCRYPT_LOKI97 (только libmcrypt > 2.4.x)

  • MCRYPT_MARS (только libmcrypt > 2.4.x, non-free)

  • MCRYPT_PANAMA (только libmcrypt > 2.4.x)

  • MCRYPT_RIJNDAEL_128 (только libmcrypt > 2.4.x)

  • MCRYPT_RIJNDAEL_192 (только libmcrypt > 2.4.x)

  • MCRYPT_RIJNDAEL_256 (только libmcrypt > 2.4.x)

  • MCRYPT_RC2

  • MCRYPT_RC4 (только libmcrypt > 2.2.x)

  • MCRYPT_RC6 (только libmcrypt > 2.4.x)

  • MCRYPT_RC6_128 (только libmcrypt > 2.2.x)

  • MCRYPT_RC6_192 (только libmcrypt > 2.2.x)

  • MCRYPT_RC6_256 (только libmcrypt > 2.2.x)

  • MCRYPT_SAFER64

  • MCRYPT_SAFER128

  • MCRYPT_SAFERPLUS (только libmcrypt > 2.4.x)

  • MCRYPT_SERPENT(только libmcrypt > 2.4.x)

  • MCRYPT_SERPENT_128 (только libmcrypt > 2.2.x)

  • MCRYPT_SERPENT_192 (только libmcrypt > 2.2.x)

  • MCRYPT_SERPENT_256 (только libmcrypt > 2.2.x)

  • MCRYPT_SKIPJACK (только libmcrypt > 2.4.x)

  • MCRYPT_TEAN (только libmcrypt > 2.2.x)

  • MCRYPT_THREEWAY

  • MCRYPT_TRIPLEDES (только libmcrypt > 2.4.x)

  • MCRYPT_TWOFISH (для старых версий mcrypt 2.x или для mcrypt > 2.4.x )

  • MCRYPT_TWOFISH128 (TWOFISHxxx доступны в новых версиях 2.x, но не в версиях 2.4.x)

  • MCRYPT_TWOFISH192

  • MCRYPT_TWOFISH256

  • MCRYPT_WAKE (только libmcrypt > 2.4.x)

  • MCRYPT_XTEA (только libmcrypt > 2.4.x)

Вы обязаны (в режимах CFB и OFB) или можете (в режиме CBC) поддерживать вектор инициализации /initialization vector (IV) для соответствующей функции шифровки. Этот IV обязан быть уникальным и обязан быть тем же самым при дешифровке/шифровке. Для данных, которые хранятся в шифрованном виде, вы можете получить вывод функции индекса, под которым данные хранятся (например, MD5-ключ имени файла). Альтернативно вы можете передать IV вместе с шифрованными данными (см. в Главе 9.3 в Applied Cryptography by Schneier (ISBN 0-471-11709-9) обсуждение этого вопроса).

Содержание

 
mcrypt_cbc - шифрует/дешифрует данные в режиме CBC
mcrypt_cfb - шифрует/дешифрует данные в режиме CFB
mcrypt_create_iv - создаёт вектор инициализации (IV) из произвольного ресурса
mcrypt_decrypt - дешифрует crypttext с заданными параметрами
mcrypt_ecb - шифрует/дешифрует данные в режиме ECB mode
mcrypt_enc_get_algorithms_name — возвращает имя открытого алгоритма
mcrypt_enc_get_block_size — возвращает размер блока открытого алгоритма
mcrypt_enc_get_iv_size — возвращает размер IV открытого алгоритма
mcrypt_enc_get_key_size — возвращает максимальны поддерживаемый keysize/размер ключа открытого режима
mcrypt_enc_get_modes_name — возвращает имя открытого режима
mcrypt_enc_get_supported_key_sizes — возвращает массив с поддерживаемыми размерами ключей открытого алгоритма
mcrypt_enc_is_block_algorithm_mode - проверяет, работает ли шифровка открытого режима с блоками
mcrypt_enc_is_block_algorithm - проверяет, является ли алгоритм открытого режима алгоритмом блока
mcrypt_enc_is_block_mode - проверяет, выводит ли открытый режим блоки
mcrypt_enc_self_test — эта функция запускает самопроверку в открытом модуле
mcrypt_encrypt - шифрует обычный текст с заданными параметрами
mcrypt_generic_deinit — эта функция деинициализирует модуль шифровки
mcrypt_generic_end — эта функция прерывает шифровку
mcrypt_generic_init — эта функция инициализирует все буферы, необходимые для шифрования
mcrypt_generic — эта функция шифрует данные
mcrypt_get_block_size - получает размер блока специфицированного шифра
mcrypt_get_cipher_name - получает имя специфицированного шифра
mcrypt_get_iv_size — возвращает размер IV, принадлежащего специфицированной комбинации шифр/режим
mcrypt_get_key_size - получает размер ключа специфицированного шифра
mcrypt_list_algorithms - получает массив всех поддерживаемых шифров
mcrypt_list_modes - получает массив всех поддерживаемых режимов
mcrypt_module_close - закрывает mcrypt-модуль
mcrypt_module_get_algo_block_size — возвращает размер блока специфицированного алгоритма
mcrypt_module_get_algo_key_size — возвращает максимальный поддерживаемый keysize открытого режима
mcrypt_module_get_supported_key_sizes — возвращает массив с поддерживаемыми keysizes открытого алгоритма
mcrypt_module_is_block_algorithm_mode - эта функция возвращает, является ли специфицированный модуль алгоритмом блока, или нет
mcrypt_module_is_block_algorithm — эта функция проверяет, является ли специфицированный алгоритм алгоритмом блока
mcrypt_module_is_block_mode - эта функция возвращает, выводит специфицированный режим блоки, или нет
mcrypt_module_open — эта функция открывает модуль алгоритма и используемый режим
mcrypt_module_self_test — эта функция запускает самопроверку в специфицированном модуле
mcrypt_ofb - шифрует/дешифрует данные в режиме OFB
mdecrypt_generic — эта функция дешифрует данные
 
 
 Функции по алфавиту 
   Содержание   
 Функции по категориям 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS