WEB форумы на jedi
[Форум] [Помощь] [Поиск] [Выйти]
Добро пожаловать, [info]User

WEB форумы на jedi [ПОИСК] [Архив до 03.2006]

Тема Проигрывание музыки К предыдущему сообщению На следующее сообщение Программирование

Отправил deadman в 14:13 22.11.2004[Ответить]
Необходимо проиграть музыку в Delphi. Есть стандартный компонент TMediaPlayer справляющийся с этой задачей (лишь бы кодеки на компьютере были установлены). Можно использовать его, если Visible установить в false и самому программно им управлять. В принципе не так уж и плохо. Может кто знает стоит ли его использовать для таких целей? Может кто-нибудь знает сторонние компоненты для таких целей, именно те которые Вы использовали.


Отправил deadman в 15:52 22.11.2004[Ответить]
И ещё вопрос. Чего-то сегодня на вопросы пробило.

Есть файл в нём данные, необходимо обеспечить его
защиту от постороннего доступа. До чего додумался я:
1. в файле есть заголовок (далее Header)
его вид:
Header = record
TAG: string[3]; // например TAG
// ... ещё что-то
HashParol: string[20];
end;
2. Генерируем случайный пароль (длина 20 символов),
им шифруем любым из известных методов шифрования
файл (без заголовка).
3. Просим у пользователя ввести свой пароль и им
шифруем наш случайный пароль, получившийся хэш
записываем в HashParol.

Как такая система защиты?
Получается пароль пользователя не хранится в чистом
виде и файл зашифрован. Но возникает другая проблема
при повреждении даже одного байта хэша, файл можно
выкинуть в мусорку! Может у кого-то есть идеи получше?


Отправил Пaшкa в 16:51 22.11.2004[Ответить]
Задачу полнее опишите. Алгоритмов и методов шифрования полным полно, а какой применять - уже надо смотреть.


Отправил deadman в 20:44 22.11.2004[Ответить]
Нашлась ошибка. Если мы шифруем весь файл каким-то случайным паролем, а потом паролем пользователя его зашифровываем (причём зашифровываем односторонним алгоритмом), то узнать случайный пароль уже не удастся. Поэтому изменяю постановку моего алгоритма:
1. Пользователь вводит пароль, с помощью RSA шифруем весь файл (без заголовка)
2. Односторонним алгоритмом превращаем пароль пользователя в хэш

HashParol := Crypt (UserParol);

3. При открытии файла запращиваем пароль

if Crypt (NewUserParol) = HashParol then всё ок!

4. Расшифровываем файл с помощью пароля NewUserParol.

Для одностроннего преобразования склоняюсь к md5.

PS. Не совсем понятно зачем нужны конкретные системы шифрования которыми я пользуюсь?


Отправил deadman в 09:44 23.11.2004[Ответить]
Идея здесь в том, чтобы каким либо образом защитить наш хэшированный пароль от изменения. Если реализовать шифровку на том уровне который я описал, достаточно в файле изменить один байт хешированного пароля и файл станет недоступен.


Отправил _TheKoder_ в 10:15 23.11.2004[Ответить]
Насчет музыки - есть вариант использовать звуковые движки - такие как fmod например ( http://www.fmod.org ) Поддерживает большое количество форматов, 3д звук, не требует кодеков и самое главное бесплатен.


Отправил deadman в 10:20 23.11.2004[Ответить]
Спасибо, счас скачаю посмотрю.


Отправил deadman в 11:12 23.11.2004[Ответить]
Мощная штука, чего только не может :). Счас на компьютере с его помощью музыку слушаю :). Жду ещё предложений...


Отправил deadman в 15:22 23.11.2004[Ответить]
Второй вариант шифровки мне показался каким то пустым. Поэтому вот новый:
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 и пароль который они получили. Потом попытатся получить с помощью найденного ими действительного (не шифрованного) пароля пароль шифрованный, что тоже будет довольно сложно.


Отправил deadman в 17:54 23.11.2004[Ответить]
RSA то ведь ассиметричный алгоритм. Лучше использовать ГОСТ, AES или что-то другое, т.к. хочу работать без открытых закрытых ключей и прочей ... Можно конечно и RSA использовать, но это какое-то извращение :).