расшифровывать не нужно ))
нужно просто сравнить с такой же парой на сервере через код...
1. вы передаете username и hash (key - НЕ ПЕРЕДАЕТЕ!)
2. затем берете на сервере вычисляете (по пришедшему username) hash и сравниваете его с тем, что пришел.
3. равны - AUTH OK.
Ошибка в общем программном коде и разные базы (или одна) - уже не важно.
Унесут все.
Простая защита - alias-ы:
ID-компании, логин1 и пароль1 (для кода/скриптов) => API (query-proxy) => DB-компании, host, логин2 и пароль2 (для базы)
На уровне API делаете централизованную проверку на "кривость" запросов и запускаете под другим пользователем, который кроме исполнения этого файла больше ничего не может.
Итого имеем: [web-server] => [query-proxy] => [db's]
Чтобы получить доступ к базе, нужно вначале получить доступ к просмотру информации в [query-proxy]. А это уже не так просто, особенно, если он в виде скомпилированного модуля.
Слушайте ритм (ударные) и тон. Далее выравнивайте ритм (bpm) у двух сводимых кусков, затем тональность и выравниваете громкость. И режете на конце повторяющегося куска.
Т.е. (терь по-русски) паттерн в несколько тактов Вам нужно выделить...
И стыкуете на "ударе" следующего паттерна в единой ноте. (зависит от "сильной" доли внутри такта, т.е. от стиля музыки)
1. Эталон - хешируем захваченный с микрофона поток в базу данных.
2. Сравнение - делаем нечеткое сравнение хешей полученного только что с эталонным. (дерево весов, расстояние Хемминга, нейросеть и т.п.)
3. По результату - авторизуем или нет.
Повысьте безопасность просто: история входов (куки, IP и т.д.) + голос!
Новый ПК (или подсеть) - двухфакторную авторизацию тогда...
Основные проблемы: искажения звука в разных микрофонах и в окружающей среде (шумы, эхо и т.д.).
Просто запомните: несовпадение типов и когда начало строки не является числом при гибком (==) сравнении с 0 - это всегда True.
Т.е.:
'abc'==0 => true
'abc123'==0 => true
Один из вариантов решения (он не лучший!): Тут отвечал про хеширование строк.
Для нахождения максимального совпадения строк...
Конечно, это не очень красиво, но вполне работоспособно....
На Delphi работа с сетью с какой версии стала вдруг невозможна?
Также, есть много компонентов для ЛЮБЫХ задач... Есть импорт C/C++ библиотек...
Можете делать все что угодно...
Вы же на этом делаете (надеюсь?))
Давным-давно был изобретен почтовый сервер....
.............. (долго рассказывать....)
MD5-CRAM (en.wikipedia.org/wiki/CRAM-MD5)
Заменяем MD5 на что-то более существенное. Например, HMAC
Таймеры - по-вкусу)
Неужели такой код работает?!
(отдача-то должна идти контента, а не header-a...)
Если редирект 302 - то не будет. (почти как сейчас, т.к. плеер подхватит поток с другого сервера)
Если проксирование/проброс - то, конечно, будет... (когда отдача контента идет напрямую через Ваш скрипт)