Криптография в С++

Николай "GоrluM" Андреев

Xakep, номер #051, стр. 051-082-4


Но я предпочитаю CryptoAPI. C сайта www.xakep.ru ты можешь скачать исходник программы, использующий криптоапи. Там же скачивай исходник с бинарником сегодняшней программы шифрования файла. И с подробными комментариями!

Break

Если возникнут какие-то вопросы, связанные с алгоритмами шифрования или нашей программой, пиши. Обязательно отвечу. Подробную информацию по апи функциям, приведенным в статье, и, кстати, по криптоапи, ты сможешь найти в MSDN (msdn.microsoft.com) на сайте или на диске, прилагающемся к Visual Studio (это неправда, обычно в палатках VS всегда сильно урезан, а MSDN покупается отдельно на 3-4 дисках - прим. ред.). Но я хочу тебя предупредить: в нашей стране, согласно указу №334 от 3 апреля 1995 года, производить и распространять любые шифрующие средства можно, только имея лицензию ФАПСИ. Соответственно, шифровать нельзя :). Поэтому пиши программы только для личного пользования и только в познавательных целях.

На этом все. Удачного компилирования.

//Мы будем использовать WinAPI

#include <windows.h>

//Код шифрующей функции

void code(char *in,int szin,char *key,int szkey){

for(int i = 0,t = 0; i < szin; in[i++] ^= key[t++]) if(t >= szkey) t = 0;

}

//точка входа

int main(int argc, char **argv){

//Открываем файл для чтения и записи

HANDLE hFile = CreateFile(argv[1],GENERIC_WRITE|GENERIC_READ,0,0,3,0,0);

//Получаем его размер

DWORD dwFileSize = GetFileSize(hFile,0);

//Создаем проекцию файла

HANDLE hFileMap = CreateFileMapping(hFile,0,4,0,dwFileSize,0);

//Получаем указатель на проекцию

char* cFile = (char*)MapViewOfFile(hFileMap,2,0,0,0);

//Шифруем всю проекцию

code(cFile,dwFileSize,argv[2],strlen(argv[2]));

//После использования файл и проекцию требуется закрыть

//Ставим EOF, закрываем файл и его проекцию

UnmapViewOfFile(cFile);

SetFilePointer(hFile,dwFileSize,0,0);

SetEndOfFile(hFile);

CloseHandle(hFileMap),CloseHandle(hFile);

return 0;

}

Назад на стр. 051-082-3  Содержание