|
Криптография в С++ Николай "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; } |