Crypto.BlowfishEncryptString
Описание
Кодирует строку в Blowfish и возвращает кодированную в base64 строку, содержащую зашифрованные данные.
Примечание: Кодировка Base64 это процесс кодирования произвольных данных как простого ASCII текста. Один из обычных видов использования этого типа кодировки - пересылка файлов через электронную почту e-mail. Это один из способов применяемых стандартом MIME для пересылки данных не в текстовом ASCII формате.
ПараметрыText
(строка) Строка, которую нужно зашифровать.
Key
(строка) Секретный ключ, для шифровки данных.
LineLen
(число) Максимальная длина строки для текста, кодированного в base64, в знакоместах (символах). (Для без обрывной строки используем 0.) Значение по умолчанию равно 0.
ВозвратResultVariable
(строка) Строка, зашифрованная в base64, содержащая кодированные данные. Если данные не могут быть зашифрованы или случается какая другая ошибка, будет возвращена пустая строка (""). Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.
При добавлении действия из редактора скрипта, можно использовать это поле для определения переменной, которая возвращает значение, сохраняющееся в ней.
Смотрите также: Связанные действия
ПримерыПример 1sEncryptedString = Crypto.BlowfishEncryptString(sTextToEncrypt, sSecretKey);Кодирует текст, хранящийся в переменной 'sTextToEncrypt' с ключом, сохраненным в 'sSecretKey', и сохраняем результат в переменной 'sEncryptedString'. Пример 2-- Initialize Registration/Access variables -- Инициализируем переменные регистрации/доступа bRegistrationRequired = true; bAllowAccess = false; -- Initialize registry action variables -- Инициализируем переменные действия с реестром nMainKey = HKEY_CURRENT_USER; sSubKey = "SOFTWARE\\Your_Product\\Registration"; sUserNameValue = "UserName"; sSerialValue = "Serial"; sMD5CheckValue = "CheckKey"; sRegisterKeyValue = "RegKey"; bAutoExpand = true; -- if the user's registration info was stored in the Windows Registry -- (in the form of blowfish-encrypted strings), decrypt it -- если информация о регистрации пользователя хранится в реестре Windows -- (в виде строк, кодированных в blowfish), декодируем её if Registry.DoesKeyExist(nMainKey, sSubKey) then -- Key exists, pull values from registry -- Ключ существует, вытягиваем значения из реестра sUserName = Registry.GetValue(nMainKey, sSubKey, sUserNameValue, bAutoExpand); sSerial = Registry.GetValue(nMainKey, sSubKey, sSerialValue, bAutoExpand); sMD5Check = Registry.GetValue(nMainKey, sSubKey, sMD5CheckValue, bAutoExpand); sRegisterKey = Registry.GetValue(nMainKey, sSubKey, sRegisterKeyValue, bAutoExpand); if (sUserName ~= "") and (sSerial ~= "") and (sMD5Check) and (sRegisterKey ~= "") then -- All four values are present, perform check -- Все четыре значения присутствуют, выполняем проверку sUserNameDecrypted = Crypto.BlowfishDecryptString(sUserName, sRegisterKey); sSerialDecrypted = Crypto.BlowfishDecryptString(sSerial, sRegisterKey); if (Crypto.MD5DigestFromString(sUserNameDecrypted) .. Crypto.MD5DigestFromString(sSerialDecrypted)) == sMD5Check then -- MD5 check passed, we don't need to register -- Прошла проверка MD5, регистрация не нужна bRegistrationRequired = false; -- allow access -- разрешаем доступ bAccessAllowed = true; end end end if bRegistrationRequired then -- Registration is required -- Требуется регистрация sUserName = Dialog.Input("UserName", "Please enter your username:"); if sUserName ~= "CANCEL" and sUserName ~= "" then -- User didn't press cancel, get serial -- Пользователь не нажал cancel (отмена), получаем серийный номер sSerial = Dialog.Input("UserName", "Please enter your serial number:"); if sSerial ~= "CANCEL" and sSerial ~= "" then -- user didn't press cancel, continue. -- пользователь не нажал cancel (отмена), продолжаем. -- get install date time in format JULIANsecondsMINUTEShours -- получаем установки даты и времени в формате ДАТАсекундыМИНУТЫчасы sInstallDateTime = System.GetDate(DATE_FMT_JULIAN) .. System.GetTime(TIME_FMT_SEC) .. System.GetTime(TIME_FMT_MIN) .. System.GetTime(TIME_FMT_HOUR); -- Generate HTTP Submit variables -- Создаем переменные HTTP Submit sURL = "http://www.yourdomain.com/register_app.php" tSubmitTable = {user = sUserName, serial = sSerial, installed = sInstallDateTime}; nMethod = SUBMITWEB_POST; nTimeout = 20; nPort = 80; tAuth = nil; tProxy = nil; -- Submit to web (structure of returned string: UserNameMD5SerialMD5::Key) -- Отправляем в сеть (структура возвращенной строки: UserNameMD5SerialMD5::Key) sReturnedData = HTTP.Submit(sURL, tSubmitTable, nMethod, nTimeout, nPort, tAuthData, tProxyData); if sReturnedData == "-1" or sReturnedData == "" then -- An error occured, deny access -- Произошла ошибка, отказ доступа bAccessAllowed = false; else -- No error occured, cut apart string -- Ошибки не было, обрезаем часть строки nDelimiterPosition = String.Find(sReturnedData, "::", 1, false); -- Get everything before the :: -- Получаем все, что перед :: sMD5Check = String.Mid(sReturnedData, 1, nDelimiterPosition - 1); -- Get everything after the :: -- Получаем все, что после :: sKey = String.Mid(sReturnedData, nDelimiterPosition + 2, -1); -- Assign the registry values -- Задаем значения реестра Registry.SetValue(nMainKey, sSubKey, sUserNameValue, Crypto.BlowfishEncryptString(sUserName, sKey), REG_SZ); Registry.SetValue(nMainKey, sSubKey, sSerialValue, Crypto.BlowfishEncryptString(sSerial, sKey), REG_SZ); Registry.SetValue(nMainKey, sSubKey, sMD5CheckValue, sMD5Check, REG_SZ); Registry.SetValue(nMainKey, sSubKey, sRegisterKeyValue, sKey, REG_SZ); -- set register variable to false (so the user isn't prompted to enter info again) -- устанавливаем переменную регистрации в ложь (false) (так что пользователю не потребуется вводить информацию снова) bRegistrationRequired = false; -- display thank-you message -- показываем сообщение thank-you (спасибо вам) Dialog.Message("SUCCESS!", "Thank-you for registering. Enjoy the product!"); -- allow access -- разрешаем доступ bAccessAllowed = true; end else -- Cancel was pressed, deny access -- Был нажат Cancel (Отмена), запрет доступа bAccessAllowed = false; end else -- Cancel was pressed, deny access -- Был нажат Cancel (Отмена), запрет доступа bAccessAllowed = false; end end if not bAccessAllowed then Dialog.Message("ERROR", "Invalid registration information provided.", MB_OK, MB_ICONSTOP); Application.Exit(); endСчитываем информацию из реестра и расшифровываем её. Если информация не существует, вышеуказанный скрипт будет взаимодействовать с находящимся в интернете php скриптом (http://www.yourdomain.com/register_app.php) для проверки серийного номера. Для этого примера, будет работать следующий php скрипт: // Check for post data // Проверка почтовых данных if ($_POST) { // Initialize user array in format "Username"=>"Serial" // Инициализируем массив пользователя в формате "Username"=>"Serial" $user_array = array( "John Doe"=>"abc-def-ghi", "Jane Smith"=>"123-456-789" ); // Get info from post variables // Получаем информацию от почтовых переменных $user = $_POST['user']; $serial = $_POST['serial']; $installed = $_POST['installed']; // Step through the user array // Шаг через массив пользователя foreach($user_array as $username=>$serialnumber) { // Compare current item to the posted information // Сравниваем текущий элемент с отправленной информацией if(($user==$username) AND ($serial==$serialnumber)) { // The current user matched, return info and exit // Текущий пользователь соответствует, возвращаем данные и выходим echo md5($user).md5($serial).'::'.$installed; exit; } } // If this script makes it this far, nothing matched, return error code // Если этот скрипт делает это в конце, значит ничего не совпадает, возвращаем код ошибки echo -1; } else { // no post data was sent, return error code // данные не были отправлены, возвращаем код ошибки echo -1; } ?> Примечание: Вышеприведенный php скрипт должен быть размещен на веб-хосте с разрешенным PHP и вызван вашей программой или при помощи действия HTTP.Submit или HTTP.SubmitSecure.
Смотрите также: Связанные действия
|