[Форум] [Помощь] [Поиск] [Выйти] |
Добро пожаловать, ![]() |
|
|
| ||
Необходимо проиграть музыку в Delphi. Есть стандартный компонент TMediaPlayer справляющийся с этой задачей (лишь бы кодеки на компьютере были установлены). Можно использовать его, если Visible установить в false и самому программно им управлять. В принципе не так уж и плохо. Может кто знает стоит ли его использовать для таких целей? Может кто-нибудь знает сторонние компоненты для таких целей, именно те которые Вы использовали. |
| ||
И ещё вопрос. Чего-то сегодня на вопросы пробило. Есть файл в нём данные, необходимо обеспечить его защиту от постороннего доступа. До чего додумался я: 1. в файле есть заголовок (далее Header) его вид: Header = record TAG: string[3]; // например TAG // ... ещё что-то HashParol: string[20]; end; 2. Генерируем случайный пароль (длина 20 символов), им шифруем любым из известных методов шифрования файл (без заголовка). 3. Просим у пользователя ввести свой пароль и им шифруем наш случайный пароль, получившийся хэш записываем в HashParol. Как такая система защиты? Получается пароль пользователя не хранится в чистом виде и файл зашифрован. Но возникает другая проблема при повреждении даже одного байта хэша, файл можно выкинуть в мусорку! Может у кого-то есть идеи получше? |
| ||
Задачу полнее опишите. Алгоритмов и методов шифрования полным полно, а какой применять - уже надо смотреть. |
| ||
Нашлась ошибка. Если мы шифруем весь файл каким-то случайным паролем, а потом паролем пользователя его зашифровываем (причём зашифровываем односторонним алгоритмом), то узнать случайный пароль уже не удастся. Поэтому изменяю постановку моего алгоритма: 1. Пользователь вводит пароль, с помощью RSA шифруем весь файл (без заголовка) 2. Односторонним алгоритмом превращаем пароль пользователя в хэш HashParol := Crypt (UserParol); 3. При открытии файла запращиваем пароль if Crypt (NewUserParol) = HashParol then всё ок! 4. Расшифровываем файл с помощью пароля NewUserParol. Для одностроннего преобразования склоняюсь к md5. PS. Не совсем понятно зачем нужны конкретные системы шифрования которыми я пользуюсь? |
| ||
Идея здесь в том, чтобы каким либо образом защитить наш хэшированный пароль от изменения. Если реализовать шифровку на том уровне который я описал, достаточно в файле изменить один байт хешированного пароля и файл станет недоступен. |
| ||
Насчет музыки - есть вариант использовать звуковые движки - такие как fmod например ( http://www.fmod.org ) Поддерживает большое количество форматов, 3д звук, не требует кодеков и самое главное бесплатен. |
| ||
Спасибо, счас скачаю посмотрю. |
| ||
Мощная штука, чего только не может :). Счас на компьютере с его помощью музыку слушаю :). Жду ещё предложений... |
| ||
Второй вариант шифровки мне показался каким то пустым. Поэтому вот новый: 1. пользователь вводит пароль UserParol 2. генерируем случайный пароль HashParol := CryptMD5 (UserParol); 3. шифруем файл паролем HashParol CryptFileRSA ('file1.sample', HashParol); 4. шифруем случайный пароль HashParol используя UserParol CryptHashParol := CryptParolRSA (HashParol, UserParol); 5. записываем CryptHashParol в Header. Открытие файла: 1. пользователь вводит пароль NewUserParol 2. читаем NewHashParol из Header файла 2. расшифровываем случайный пароль HashParol HashParol := DeCryptParolRSA (NewHashParol, NewUserParol); 3. расшифровываем весь файл DeCryptFileRSA ('file1.sample', HashParol); На пути взломщиков встают такие проблемы: Если они пытаются подобрать перебором. Для этого они знаю, что в файле есть спецсимволы на определённых позициях. Но у нас файл шифруется не паролем пользователя а его хэшем (длина 20 символов). Даже если им это удастся, что маловероятно (т.к. степень безопасности не падает даже если пользователь введёт пароль длиной в один символ) то они получат только случайный пароль. Чтобы получит пароль пользователя им придётся взять мой зашифрованный пароль из Header и пароль который они получили. Потом попытатся получить с помощью найденного ими действительного (не шифрованного) пароля пароль шифрованный, что тоже будет довольно сложно. |
| ||
RSA то ведь ассиметричный алгоритм. Лучше использовать ГОСТ, AES или что-то другое, т.к. хочу работать без открытых закрытых ключей и прочей ... Можно конечно и RSA использовать, но это какое-то извращение :). |