Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » » Программирование
Философия, технологии, алгоритмы!

Ответ
 
Опции темы
Старый 02.05.2007, 19:06   #1   
Registered User
 
Сообщений: 77
Регистрация: 18.11.2003
Возраст: 41

Конер вне форума Не в сети
Post СРОЧНО!!! Нужна прога для сдачи =) Я не жадный!

Так вот, нужно сдать последнюю прогу для получения зачета =) Смысл- каким либо образом обеспечить защиту файла, ну или просто данных, хотя лучше все же файла =)) Так вот, нужно поле для ввода пароля, а потом уже должен быть доступ к соотв. файлу (информации)... Крайне желательно данные не только защитить паролем но и каким-нибудь алгоритмом шифрования! Как все это реализовать визуально - это уже ваши соображения и мои одобрения!!!
А теперь главное- срок до след недели!!!
Цена - все зависит от того что вы сможете сделать, но она в любом случае будет немаленькая!!!
Жду...
пишите предложения - koner@gmail.ru
или личка!
PS это важно! у меня пропадает автомат =((( Кто готов помочь?
  Ответить с цитированием
Старый 03.05.2007, 00:00   #2   
Registered User
 
Сообщений: 77
Регистрация: 18.11.2003
Возраст: 41

Конер вне форума Не в сети
хм... ну что неужели нет никого ?
кстати, язак желательно дельфи или си=)
  Ответить с цитированием
Старый 03.05.2007, 17:40   #3   
бибизьян
 
Аватар для aerin
 
Сообщений: 3,020
Регистрация: 17.02.2004

aerin вне форума Не в сети
Идея проста как тапок, нужно лишь вспомнить, что если A xor B = C,
то C xor B = A. Далее, с паролем, самый простой способ - дописать его в конец данных и после распаковки сравнить с введенным пользователем.
Вот код(писалось наспех, поэтому все обработки ошибок опущены ):
Цитата:
#include <windows.h>
#include <stdio.h>
#include <io.h>

FILE* infile = NULL;
FILE* outfile = NULL;
BYTE* pass = NULL;
int cur_char = 0;
int pass_len = 0;
long ifsize = 0;

void main( int argc, char* argv[] )
{
if( 5 != argc )
{
printf( "Usage: encdec action infile outfile password\n" );
printf( " action = e - encode or d - decode\n" );
printf( " infile = name of input file\n" );
printf( " outfile = name of output file\n" );
printf( " password = password for operation\n" );
return;
}
infile = fopen( argv[2], "rb" );
outfile = fopen( argv[3], "w+b" );

pass = (BYTE*)argv[4];
pass_len = strlen( argv[4] );

BYTE indata;
BYTE outdata;
ifsize = _filelength( _fileno( infile ) );
for( long i = 0; i < ifsize; i++ )
{
fread( &indata, 1, 1, infile );
outdata = pass[cur_char] ^ indata;
fwrite( &outdata, 1, 1, outfile );
cur_char++;
if( cur_char == pass_len )
cur_char = 0;
}

BYTE data;
if( 0 == strcmp( "e", argv[1] ) )
{
for( int i = 0; i < pass_len; i++ )
{
data = pass[i] ^ pass[cur_char];
fwrite( &data, 1, 1, outfile );
cur_char++;
if( cur_char == pass_len )
cur_char = 0;
}
fclose( infile );
fclose( outfile );
printf( "Encoding complete.\n" );
}
else
{
fclose( infile );
fflush( outfile );
fseek( outfile, -pass_len, SEEK_END );
for( int i = 0; i < pass_len; i++ )
{
fread( &data, 1, 1, outfile );
if( data != pass[i] )
{
fclose( outfile );
remove( argv[3] );
printf( "Wrong password.\n" );
return;
}
}
_chsize( _fileno(outfile), ifsize - pass_len );
fclose( outfile );
printf( "Decoding complete.\n" );
}
}
Упс, в программу из-за спешки прокрались два насекомых...
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind