diff options
Diffstat (limited to 'help/ru/manager/keygen/keygen_php.htm')
-rw-r--r-- | help/ru/manager/keygen/keygen_php.htm | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/help/ru/manager/keygen/keygen_php.htm b/help/ru/manager/keygen/keygen_php.htm new file mode 100644 index 0000000..7df459a --- /dev/null +++ b/help/ru/manager/keygen/keygen_php.htm @@ -0,0 +1,143 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <link rel="Stylesheet" type="text/css" href= + "../../default.css" /> + <meta http-equiv="Content-Type" content= + "text/html; charset=utf-8" /> + + <title>Генератор ключей: UNIX-версия</title> +</head> + +<body> + <h1>Генераторы ключей: UNIX-версия</h1> + + <h3>Описание</h3> + + <p>UNIX-версия генератора ключей преставляет собой PHP-файл, + содержащий все необходимое для генерации серийных номеров. Файл + находится в каталоге <strong>Keygen\PHP</strong>, ниже + рассмотрены основные моменты его + использования.</p> + + <h3>Настройка генератора</h3> + + <p>В самом начале PHP-файла располагается код настройки + генератора:</p> + <pre class="code">////////////////////////////////////////////////////////////////////////////////////////////// +// The following lines should be generated by VMProtect License Manager +$exported_algorithm = "RSA"; +$exported_bits = 2048; +$exported_private = "PJvj4kEpoQMIpYK+9wEt......xKeiSZgzdiln8Q=="; +$exported_modulus = "rOlny/3QgZb/VmGr3CmY......I6ESAUmtQ+RBqQ=="; +$exported_product_code = "oLQdGUn8kVk="; +////////////////////////////////////////////////////////////////////////////////////////////// +</pre> + + <p>Этот код генерируется автоматически в VMProtect (см. <a href= + "../licenses.htm#export">Экспорт параметров продукта</a>) и + уникален для каждого конкретного продукта. Очень важно + скопировать его без ошибок, в противном случае генератор будет + работать некорректно.</p><strong>Содержимое ключа</strong> + + <p>Далее в генераторе задается содержимое серийного номера. + Содержимое задается массивом, ниже задаются все возможные + параметры ключа, однако в реальных условиях часть из них может + отсутствовать:</p> + <pre class="code">$params = <strong>array</strong>( + user_name => "John Doe", // UTF-8! + email => "john@doe.com", + hwid => "vHGMdMRvGCPjWcCQ", // Exactly as returned by VMProtectGetCurrentHWID + expire_date => <strong>array</strong>(year => 2009, month => 10, day => 1), + maxbuild_date => <strong>array</strong>(year => 2009, month => 10, day => 1), + time_limit => 10, + user_data => <strong>base64_decode</strong>("CGCvRvMWcPHGdMjQ"), // string of bytes + ); +</pre> + + <h3>Функция обработки успешной генерации</h3> + + <p>Ниже расположена простейшая реализация функции, которая + вызывается при успешной генерации серийного номера. Единственным + параметром она получает строку с номером. Функция должна передать + номер вызывающей стороне (регистратору), обычно это делается при + помощи команды <strong>echo</strong>. Предварительно строка + разбивается на подстроки длиной 75 символов для удобства. Также + эта функция может отправлять сгенерированный номер по почте + производителю программы или заносить его в базу данных.</p> + <pre class="code">function <strong>OnSerialGenerated</strong>($serial) +{ + $serial = <strong>wordwrap</strong>($serial, 75, "\n", true); + <strong>echo</strong> $serial; +} +</pre> + + <h3>Функция обработки ошибок генерации</h3> + + <p>Последний участок кода, требующий внимания - это функция, + которая вызывается в случае возникновения проблем. Функция + получает в виде параметра строку с текстом ошибки, а после ее + завершения вызывается функция <strong>die()</strong>. Функция + должна сделать две вещи: вернуть регистратору вместо ключа текст + о том, что ключ будет выслан вручную, а также выслать + производителю программы всю необходимую информацию для устранения + ошибки и ручной генерации ключа.</p> + <pre class="code">function <strong>OnSerialGenerationFailed</strong>($details) +{ + <strong>echo</strong> "You will receive serial number in the next 24 hours"; // message to the customer +// mail("support@vendor.com", "Houston, we have a problem", $details); // message to vendor +} +</pre> + + <p>Причин возникновения ошибки может быть несколько: некорректные + параметры алгоритма, некорректные параметры ключа, слишком + длинное имя пользователя или e-mail. Слишком длинный серийный + номер, который не влезает в количество бит, указанное в + алгоритме. Поэтому функция + <strong>OnSerialGenerationFailed</strong> должна отправить + производителю максимально подробную информацию о случившемся, + дабы тот мог вручную сгенерировать серийный номер и отправить его + покупателю.</p> + + <h3>На что еще следует обратить внимание</h3> + + <p>Генератор ключей в примерах максимально упрощен. Он не + учитывает рекомендации по разработке веб-генераторов, данные + <a href="index.htm">здесь</a>. Он не проверяет IP-адрес + вызывающей стороны и не анализирует входные параметры. Имейте это + в виду, когда будете создавать свой собственный генератор на + основе этого.</p> + + <p>Имя пользователя и e-mail должны быть переданы в кодировке + UTF-8. Уточните у вашего регистратора, в какой кодировке он + передает информацию о покупателе и, при необходимости, проведите + конвертацию. Неправильная кодировка не приведет к + неработоспособности серийного номера, однако номер будет + содержать совершенно другое имя пользователя и он может быть + удивлен, если вы показываете его, скажем, в окне "О + Программе".</p> + + <p>Асимметричное шифрование - достаточно сложный в математическом + плане процесс. Если он реализован на чистом PHP, без применения + сторонних библиотек, то генерация серийного номера может занять + десятки секунд. Генератор использует функции + <strong>gmp_powm</strong>, <strong>bi_powmod</strong>, + <strong>bcpowod</strong> в случае их наличия. Все эти функции + имеют разную скорость. Если генерация ключей на вашем хостинге + занимает слишком большое время, рекомендуется пообщаться со + службой поддержки на предмет подключения описаных выше функций. К + примеру, функция <strong>gmp_powm</strong> работает в десятки раз быстрее + функции <strong>bcpowmod</strong>.</p><br /> + <br /> + <br /> + <br /> + <br /> + <hr noshade="noshade" size="1" /> + + <div align="center"> + © 2006-2015 Copyright VMProtect Software + </div> +</body> +</html> |