Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Зашифровать файл [D7]


Choovak ©   (2005-07-28 12:05:00) 

Как можно зашифровать файл чтобы юзер не смог его открыть?


Lamer@fools.ua   (2005-07-29 14:39:00) [1]

>> Jeer ©   (29.07.05 14:34) [18]

См. [13].


Jeer   (2005-07-29 14:34:00) [2]

Lamer@fools.ua ©   (29.07.05 13:13) [17]

>Понятие "открыть файл" (а в формулировке автора "чтобы юзер не >смог его открыть") подразумевает, насколько я понимаю, операцию >открытия файла, используя штатные средства ОС.

..операция открытия файла приложением, способным работать с данным форматом через штатные средства ОС.

Но можно открыть файл иными приложениями, не понимающими специфический формат, например hex-редактором.

Именно эта поправка имелась в виду в посте Jeer ©   (28.07.05 12:09) [1], поясняющая, что зашифрованный файл все равно можно открыть, но без доступа к смысловому содержимому.


Lamer@fools.ua   (2005-07-29 13:13:00) [3]

>> Jeer ©   (29.07.05 11:40) [15]

Понятие "открыть файл" (а в формулировке автора "чтобы юзер не смог его открыть") подразумевает, насколько я понимаю, операцию открытия файла, используя штатные средства ОС. Если имеется доступ к диску минуя механизмы ОС доступа к файлам, то тут запретить открытьфайл проблематично, конечно. Хотя бы потому, что можно и посекторно/покластерно читать данные.

А насчёт намека "на использование одновременно двух методов защиты" Вы неправы. Я имел в виду только шифрование содержимого.


Jeer   (2005-07-29 11:51:00) [4]

Choovak   (28.07.05 20:21) [14]

Начни с изучения чужих форматов.


Jeer   (2005-07-29 11:40:00) [5]

Lamer@fools.ua ©   (28.07.05 12:15) [2]

Для ламера из fools.ua доступно объясняю:

1. Средства шифрации и ограничения доступа (права доступа) выполняют функцию предотвращения доступа к защищаемому содержимому.
2. Средства шифрации не ограничивают физический доступ, но при этом без выполнения дешифрации получить доступ к смысловому содержимому невозможно.
3. Права доступа, ограничивая физический доступ не защищают содержимое от всех тех, кто имеет право на физический доступ.
4. Разумеется, возможно одновременные шифрация и ограничение доступа

В вашем посте:
"Ну в NTFS можно так зашифровать, что и открыть не сможет..."

содержится намек на использование одновременно двух методов защиты, но он некорректен, поскольку шифрация не означает ограничение физического доступа, т.е. запрет на открытие.
А перевели Вы верно, спору нет, но это относится к шифрации данных, а не правам доступа к файлам.


Choovak   (2005-07-28 20:21:00) [6]


> Antonn ©   (28.07.05 16:28) [10]

Спасибо большое, учту как вариант

> Андрей Молчанов   (28.07.05 18:26) [12]

Не, это совсем не то

А вообще, хотелось бы почитать, как свой формат написать...


Lamer@fools.ua   (2005-07-28 18:51:00) [7]

>> Jeer ©   (28.07.05 18:08) [11]

> Видишь ли..
Открыть файл после этого все равно можно:)
Другое дело, что не прочитать.

Поэтому - точнее выражаемся.


Простите, сенсей, мою огромную тупизну, но у меня функция CreateFile в операторе
HANDLE hFile = CreateFile(fn, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
   NULL, OPEN_EXISTING, 0, NULL);

(где fn - строка с именем encrypted файла)
возвращает INVALID_HANDLE_VALUE, а GetLastError() возвращает 5 (ERROR_ACCESS_DENIED).

Может подскажите, что я делаю не так?


Андрей Молчанов   (2005-07-28 18:26:00) [8]

Самое простое - поменять расширение на какое-нибудь *.ens. Но это так, на дурака.


Jeer   (2005-07-28 18:08:00) [9]

Lamer@fools.ua ©   (28.07.05 14:48) [9]

Видишь ли..
Открыть файл после этого все равно можно:)
Другое дело, что не прочитать.

Поэтому - точнее выражаемся.


Antonn   (2005-07-28 16:28:00) [10]

Choovak   (28.07.05 14:20) [7]
можно еще над кодом поработать:
procedure InvertStream(var _M:TMemoryStream);
var _M_temp:TmemoryStream; i:integer;
begin
_M_temp:=TmemoryStream.Create;
try
_M_temp.SetSize(_m.Size);
_m.Position:=_m.Size;
for i:=_m.Size-1 downto 0 do begin
  _m.Position:=i;
  _M_temp.CopyFrom(_m,1);
end;
_m.Position:=0;
_M_temp.Position:=0;
_m.CopyFrom(_M_temp,_M_temp.Size);
finally
_M_temp.Free;
end;
end;


Lamer@fools.ua   (2005-07-28 14:48:00) [11]

>> Jeer ©   (28.07.05 12:53) [4]

> Это не шифрация, а ограничение доступа.

Наверное, у меня с английским очень плохо. Я думал, что "Encrypt contents to secure data" означает "Шифровать содержимое для обеспечения безопасности данных". А оказывается, что это просто ограничение доступа.


Polevi   (2005-07-28 14:22:00) [12]

можно еще компакт диск поцарапать, верный способ


Choovak   (2005-07-28 14:20:00) [13]


> грузани в TmemoryStream и сохрани "задом-на-перед".

А можно код?


Antonn   (2005-07-28 14:17:00) [14]

Choovak   (28.07.05 13:05) [5]
грузани в TmemoryStream и сохрани "задом-на-перед". Или просто добавь пару байт в начало. или сожми zlib'ом.


Choovak   (2005-07-28 13:05:00) [15]


> Придумай свой формат и напиши проигрыватель.
>
> А так - любые средства шифрации бинарных файлов или изменение
> структуры заголовка wave-файла

Может хотя бы ссылка найдётся, где обо всём этом можно прочитать?


Jeer   (2005-07-28 12:53:00) [16]

Lamer@fools.ua ©   (28.07.05 12:15) [2]

Это не шифрация, а ограничение доступа.

Choovak   (28.07.05 12:15) [3]
Придумай свой формат и напиши проигрыватель.

А так - любые средства шифрации бинарных файлов или изменение структуры заголовка wave-файла


Choovak   (2005-07-28 12:15:00) [17]

Нет я имею ввиду например есть файл *.WAV. Надо чтобы его нельзя было через Winamp проиграть


Lamer@fools.ua   (2005-07-28 12:15:00) [18]

Ну в NTFS можно так зашифровать, что и открыть не сможет...


Jeer   (2005-07-28 12:09:00) [19]

Открыть все равно сможет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо