Beispiel #1
0
/////////////// clean //////////////////////
static nxweb_result clean_on_request(
	nxweb_http_server_connection* conn, 
	nxweb_http_request* req, 
	nxweb_http_response* resp) 
{
    if (strlen(req->path_info) <= 1 || strlen(req->path_info) >= 4 ) {
	nxweb_send_http_error(resp, 403, "NUMBER error!\nExample:\nhttp://host:port/clean/24");
	resp->keep_alive=0;
	return NXWEB_ERROR;
    }

    char tmp[8] = {0};
    strcpy(tmp, (req->path_info) +1);
    int interval_hour = atoi(tmp);
    if (interval_hour < 0 || interval_hour > 99) {
	nxweb_send_http_error(resp, 403, "NUMBER error!\nExample:\nhttp://host:port/clean/24");
	resp->keep_alive=0;
	return NXWEB_ERROR;
    }

    WipeData(interval_hour);
    nxweb_response_printf(resp, "OK");
    return NXWEB_OK;
}
Beispiel #2
0
//////////////////////////////////////////////////////////////////////
// Шифрование исходного блока данных парольным блоком данных
void CInKey::Decrypt(char *prgbSourceBuffer, long int lSourceSize,
                     char *prgbPasswordBuffer)
{    
    long int i;

    // Курсоры в блоке парольных данных
    long int L, R;

    // Битовое представление данных
    char *prgbBitData = new char[2 * NBITS * lSourceSize];

    // Активируем режим расшифровки
    int mode = DECRYPT;

    // ГЕНЕРИРУЕМ MVS - Move VectorS
    StartToGenerateMVS();

    // Изначально данные лежат в начале массива (после перекодирования)
    bitDataPosition = 0;

    // Курсор R в парольном буфере встает на свое место...
    L = (lSourceSize - 1);
    
    //...а L - на свое.
    R = 0;
            
    // Перекодирование исходных данных в "битовое" отображение
    ConvertSourceToBitData(prgbSourceBuffer, lSourceSize, prgbBitData);

    // Очищаем буфер исходных данных, чтобы обеспечить корректное
    // наложение битовых данных из prgbBitData
    WipeData(prgbSourceBuffer, lSourceSize);

    /////////////////////////////////
    // Обработка данных: РАСШИФРОВКА
    /////////////////////////////////
    // Работаем до тех пор, пока все парольные данные не использованы
    for (i = 0; i < lSourceSize; i++)
    {        
        // Вращаем битовые данные первым алгоритмом
        RotateBitData(lSourceSize, prgbPasswordBuffer,
                      prgbBitData, L, mode);

        // Установка вектора перестановок (циклический вызов приводит
        // к изменению порядка следования "битов")
        MixBitData(lSourceSize, prgbPasswordBuffer,
                   prgbBitData, L, R, mode);

        // "левый" курсор выборки ключа
        L--; 
        
        // "правый" курсор выборки ключа
        R++;

        // Обновляем прогресс
        if (UpdateProgress != NULL)
        {
            UpdateProgress(i);
        }
    }

    // Перекодирование данных из "битовой" формы в исходную
    ConvertBitDataToSource(prgbSourceBuffer, lSourceSize, prgbBitData);

    // Уничтожаем данные...
    WipeData(prgbBitData, 2 * NBITS * lSourceSize);

    if (prgbBitData)
    {
        delete [] prgbBitData;
        prgbBitData = NULL;
    }
}