Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2013, 17:33   #1
s.e.r.g.
 
Регистрация: 31.01.2013
Сообщений: 8
По умолчанию шифрование данных

всем привет. мне нужна любая прога для шифрования данных, чтобы просто разобрать ее и понять смысл ее работы.если не сложно, не могли бы дать код....
s.e.r.g. вне форума Ответить с цитированием
Старый 22.02.2013, 11:37   #2
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Ну, если поможет... . Вот функция преобразования содержимого файла1 (первый параметр) с последующей записью в файл2 (второй параметр) на основе фразы-пароля (mCrypto). Алгоритм шифрования (здесь CALG_RC2) можно выбрать любой другой.
Код:
void __fastcall TForm1::fCoDec(AnsiString Pt1, AnsiString Pt2, bool enco)
{      //   своя функция обработки файлов
  //  #include  <iostream>  ,  <fstream>
    AnsiString password = mCrypto;
    const cmax = 20000;              //  максимальный размер файла

    HCRYPTPROV  hProv ;              //  провайдер
    HCRYPTHASH  hash ;               //  хэш
    HCRYPTKEY   key ;                //  ключ
    UCHAR *bufC;                     //  буфер для обработки
    DWORD len;                       //  длина данных в файле

//    получаем контекст криптопровайдера
    CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
//    создаем хеш-объект
    CryptCreateHash(hProv, CALG_SHA, 0, 0, &hash);
//    хешируем пароль
    CryptHashData(hash, password.c_str(), password.Length(), 0);
//    создаем ключ на основании пароля для потокового шифра RC2
    CryptDeriveKey(hProv, CALG_RC2, hash, 0, &key);
//    уничтожаем хеш-объект
    CryptDestroyHash(hash);
//    открываем файлы
     ifstream  fin(Pt1.c_str(),ios::in|ios::binary) ;
     ofstream fout(Pt2.c_str(),ios::out|ios::binary) ;
//    выделяем место для буфера
    bufC = new UCHAR[cmax] ;  //  выделяем память
    fin.read(bufC,cmax) ;
    len=fin.gcount() ;

    if (enco)    //    шифруем данные
       CryptEncrypt(key, 0, true, 0, bufC, &len, cmax);
    else         //   расшифровываем данные
       CryptDecrypt(key, 0, true, 0, bufC, &len );
    fout.write(bufC,len);
//    освобождаем контекст криптопровайдера
    CryptReleaseContext(hProv, 0);
    delete[] bufC;
    fin.close();
    fout.close();
}
//---------------------------------------------------------------------------
nick42 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифрование данных xil C# (си шарп) 3 17.01.2012 18:32
шифрование данных Vasisualis Общие вопросы Delphi 0 21.06.2011 22:29
Шифрование данных s-ene Свободное общение 0 12.02.2011 21:36
Шифрование данных MISHAIL Помощь студентам 4 04.02.2011 15:26
Шифрование данных frayerok Общие вопросы C/C++ 0 20.10.2008 22:35