Crypto.BlowfishDecryptString
Описание
Декодирует строку, что была закодирована действием Crypto.BlowfishEncryptString. (Декодирует строку, кодированную в base64, и декодирует данные, кодированные в blowfish.)
Совет: Если нет ранее приготовленной строки для Base64Decode, просто передайте этому действию любую строку закодированную с использованием действия Crypto.BlowfishEncryptString.
Примечание: Кодировка Base64 это процесс кодирования произвольных данных как простого ASCII текста. Один из обычных видов использования этого типа кодировки - пересылка файлов через электронную почту e-mail. Это один из способов применяемых стандартом MIME для пересылки данных не в текстовом ASCII формате.
ПараметрыText
(строка) Строка, что следует декодировать.
Key
(строка) Секретный ключ, которым были зашифрованы данные.
ВозвратResultVariable
(строка) Декодированная версия строки, что была зашифрована при помощи действия Crypto.BlowfishEncryptString. Если данные не могут быть расшифрованы или случается какая другая ошибка, будет возвращена пустая строка (""). Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.
При добавлении действия из редактора скрипта, можно использовать это поле для определения переменной, которая возвращает значение, сохраняющееся в ней.
Смотрите также: Связанные действия
ПримерыПример 1sDecryptedString = Crypto.BlowfishDecryptString(sEncryptedString, sKey);Декодируем строку 'sEncryptedString' используя ключ, хранящийся в переменной 'sKey' и сохраняем расшифрованную строку в переменной 'sDecryptedString'. Пример 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.
Смотрите также: Связанные действия
|