Crypto.BlowfishDecryptString

string Crypto.BlowfishDecryptString ( string Text,
string Key )
Примеры

Описание

Декодирует строку, что была закодирована действием Crypto.BlowfishEncryptString. (Декодирует строку, кодированную в base64, и декодирует данные, кодированные в blowfish.)

Совет: Если нет ранее приготовленной строки для Base64Decode, просто передайте этому действию любую строку закодированную с использованием действия Crypto.BlowfishEncryptString.

Примечание: Кодировка Base64 это процесс кодирования произвольных данных как простого ASCII текста. Один из обычных видов использования этого типа кодировки - пересылка файлов через электронную почту e-mail. Это один из способов применяемых стандартом MIME для пересылки данных не в текстовом ASCII формате.

Параметры

Text

(строка) Строка, что следует декодировать.

Key

(строка) Секретный ключ, которым были зашифрованы данные.

Возврат

ResultVariable

(строка) Декодированная версия строки, что была зашифрована при помощи действия Crypto.BlowfishEncryptString. Если данные не могут быть расшифрованы или случается какая другая ошибка, будет возвращена пустая строка (""). Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.

При добавлении действия из редактора скрипта, можно использовать это поле для определения переменной, которая возвращает значение, сохраняющееся в ней.
Смотрите также: Связанные действия

Примеры

Пример 1

sDecryptedString = 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 скрипт:
"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.
Смотрите также: Связанные действия