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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2009, 17:59   #21
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Ой, чёта меня занесло в дебри. Достаточно
Код:
 hDisk := CreateFile('\\.\G:', GENERIC_READ+GENERIC_WRITE, FILE_SHARE_READ+FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
и далее работаем как с обычным файлом
пыщь
JTG вне форума Ответить с цитированием
Старый 27.02.2009, 20:39   #22
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от Lime Посмотреть сообщение
...если зашифрую одним паролем, а расшифровать попытаюсь другим, то получится каша а не файл...

Я думаю сделать так : сделать ini файл , в него записать пароль , и зашифровать его тем же паролем . потом при проверке расшифровывать файл, и если получается прочитать значение , и оно равно паролю для расшифровки то продолжать расшифровку "основных" файлов.

Я правильно мыслю?
Может подскажите более рациональный или лучший способ.
А почему бы просто не дописывать дополнительную информацию в начало или конец зашифрованных файлов? Ведь без расшифровки их всё-равно невозможно нормально использовать, так какая разница в наличии нескольких "левых" байт?
Вот только сам пароль лучше все-таки не хранить, пусть даже и в зашифрованном виде, хотя чисто технически способ нормальный. Лучше хранить хэш на пароль, как это делают архиваторы (да и сама система). Например, посчитать и сохранить контрольную сумму кодов пароля, а перед расшифровкой "просуммировать" введенный пароль и сравнить "сумму" с запомненной. Даже если использовать 32-битный хеш, то вероятность случайного совпадения хешей для разных паролей практически равна нулю.
Jeni вне форума Ответить с цитированием
Старый 27.02.2009, 22:23   #23
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Я так понял Lime хочет сделать расшифровку "на лету" не требуя ввода пароля, т.е. сами данные на флешке хранятся в зашифрованном виде, а доступ к ним через его программу.

Если нет - тогда какие проблемы,
1. Делаем хэш=MD5(пароль+соль), соль пусть будет зашита в программе, просто чтоб прикрыться от брутфорса
2. Сохраняем хэш сюда же на флешку, допустим в файл .auth
3. Считаем по какой-нибудь хитрой формуле контрольную сумму хэша и дописываем в .auth

получится файл вида
[data]
hash=B300C8C7C6546C6C57FDE3DC8E37D8 02
crc=АoAs2TQ

При запуске читаем .auth, считаем по нашей хитрой формуле контрольную сумму hash и сверяем с параметром crc. Не совпадает - говорим "Файл повреждён, авторизация невозможна", иначе просим ввести пароль, делаем MD5(пароль+соль), сверяем с параметром hash, совпал - ок. Шифровать рекомендую алгоритмом RC4, он быстрый, надёжный, реализацию можно найти в гугле за минуту
пыщь
JTG вне форума Ответить с цитированием
Старый 01.03.2009, 18:43   #24
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Можно назвать и "на лету" :
ПОльзователь 1 раз вводит пароль при "установке" программы , далее программа проверяет введённый пользователем пароль и если всё верно шифрует , или расшифровывает файл введённым паролем.
В окне программы по категориям расположена " защищённая зона" с зашифрованными и не зашифрованными файлами.

При двойном клике по зашифрованному файлу( в проге ) она расшифровывает файл и запускает его , не спрашивая повторного ввода пароля.

c md5 я ниразу не сталкивался, хотя я понимаю что это за животное

В общем , я попытаюсь сделать так как Вы мне подсказали. Создать файл
Код:
hfile := CreateFile(pchar('\\.\'+ExtractFileDrive(application.ExeName)), GENERIC_READ+GENERIC_WRITE, FILE_SHARE_READ+FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
Далее попытатся записать в него md5 хэш пароля , и при запуске программы попытатся его счиать и если он рвен новому md5 введённого пароля , то шифруем / дешифруем.

Заодно поразмыслить над тем как это сделать чисто практически
так просто как с ini не получится

Погуглив нашол вот
Код:
function md5(const Input: String): String;
var
  hCryptProvider: HCRYPTPROV;
  hHash: HCRYPTHASH;
  bHash: array[0..$7f] of Byte;
  dwHashLen: DWORD;
  pbContent: PByte;
  i: Integer;
begin
  dwHashLen := 16;
  pbContent := Pointer(PChar(Input));

  Result := '';

  if CryptAcquireContext(@hCryptProvider, nil, nil, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT or CRYPT_MACHINE_KEYSET) then
  begin
    if CryptCreateHash(hCryptProvider, CALG_MD5, 0, 0, @hHash) then
    begin
      if CryptHashData(hHash, pbContent, Length(Input), 0) then
      begin
        if CryptGetHashParam(hHash, HP_HASHVAL, @bHash[0], @dwHashLen, 0) then
        begin
          for i := 0 to dwHashLen - 1 do
          begin
            Result := Result + Format('%.2x', [bHash[i]]);
          end;
        end;
      end;
      CryptDestroyHash(hHash);
    end;
    CryptReleaseContext(hCryptProvider, 0);
  end;

  Result := AnsiLowerCase(Result);
end;
Цитата:
Example: md5('') returns d41d8cd98f00b204e9800998ecf8427e.
Так оно реализуется? т.к. нашол довольно много разных способов , в плоть до dll .

Да и с ReadFile , WriteFile прийдётся повозится . Ни разу не работал с файлами используя Handle
Lime вне форума Ответить с цитированием
Старый 01.03.2009, 19:45   #25
eskander
Пользователь
 
Аватар для eskander
 
Регистрация: 01.03.2009
Сообщений: 29
По умолчанию

Товарищ Lime, как то написано много, а все вокруг да около.
То, что вы наметили реализовать называется шифрованием с мастер кеем Как сами понимаете это только минус для шифрования, но раз уж решили...
Проще всего не лезть в неопределенное пространство флешки, а дописывать Хэш от пароля в конец зашифрованного файла) ему от этого только лучше будет) так как дешифровать его не зная, что последние 32 байта это посторонние данные - будет невозможно.

Насчет MD5 : md5.pas - очень удобный модуль для получения мд5 хэшей.
Для шифрования посоветую использовать какой-нибудь серьезный и признанный алгоритм BLOWFISH, CAST256, DES3 либо RIJNDAEL.

Будут какие еще вопросы - обращайтесь (лучше в аську - 12Ч655)
Вложения
Тип файла: rar md5.rar (3.0 Кб, 47 просмотров)
eskander вне форума Ответить с цитированием
Старый 01.03.2009, 19:57   #26
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Цитата:
Сообщение от eskander Посмотреть сообщение
Товарищ Lime, как то написано много, а все вокруг да около.
То, что вы наметили реализовать называется шифрованием с мастер кеем Как сами понимаете это только минус для шифрования, но раз уж решили...
Проще всего не лезть в неопределенное пространство флешки, а дописывать Хэш от пароля в конец зашифрованного файла) ему от этого только лучше будет) так как дешифровать его не зная, что последние 32 байта это посторонние данные - будет невозможно.

Насчет MD5 : md5.pas - очень удобный модуль для получения мд5 хэшей.
Для шифрования посоветую использовать какой-нибудь серьезный и признанный алгоритм BLOWFISH, CAST256, DES3 либо RIJNDAEL.

Будут какие еще вопросы - обращайтесь (лучше в аську - 12Ч655)
На счёт занесения инфо о пароле в файл - хорошая идея =) можно на ходу сообщать что пароль для файла не верен, попросить ввести новый или пропустить файл) мне нравится эта мысль , спасибо )

Но как я писал выше данный вопрос не преследует максимальные возможности защиты информации , одним из важных черт должна быть безотказность ( в ситуациях с утерей , удалением и.т.д файла с паролем и настройками )

Если к файлам дописыаать только пароли - что подходит для меня, то настройки можно держать в открытом виде , т.к. их в программе можно сбросить , и их изменение ,или удаление не несёт какой либо опастности для информации и юзера

Последний раз редактировалось Lime; 01.03.2009 в 20:57.
Lime вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ещё одна прога для студентов, тестирование с помощью программы ADSoft Tester - взлом пароля rpy3uH Софт 70 23.12.2021 21:47
Проверка пароля Vladya Помощь студентам 1 20.12.2008 21:13
проверка пароля <-=SG=-> Общие вопросы Delphi 4 04.11.2008 19:44
Программа для расшифровки штрихкода Sanek777 Софт 5 27.10.2008 21:41
Считывание пароля Terran Общие вопросы Delphi 1 22.03.2008 20:09