aboutsummaryrefslogtreecommitdiff
path: root/help/ru/manager/keygen/keygen_php.htm
diff options
context:
space:
mode:
Diffstat (limited to 'help/ru/manager/keygen/keygen_php.htm')
-rw-r--r--help/ru/manager/keygen/keygen_php.htm143
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 =&gt; "John Doe", // UTF-8!
+ email =&gt; "john@doe.com",
+ hwid =&gt; "vHGMdMRvGCPjWcCQ", // Exactly as returned by VMProtectGetCurrentHWID
+ expire_date =&gt; <strong>array</strong>(year =&gt; 2009, month =&gt; 10, day =&gt; 1),
+ maxbuild_date =&gt; <strong>array</strong>(year =&gt; 2009, month =&gt; 10, day =&gt; 1),
+ time_limit =&gt; 10,
+ user_data =&gt; <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>