LINUX.ORG.RU

Как сделать зашифрованный обмен информацией при помощи функций gambas?

 , , , ,


2

5

Я никогда ранее не использовал библиотеки для шифрования в своих программах. А сейчас понадобилось написать зашифрованный обмен данными. В распоряжении есть функции шифрования http://gambaswiki.org/wiki/comp/gb.crypt/crypt?l=ru

  • Check ( Password As String, Crypt As String ) As Boolean
  • DES ( Password As String [ , Prefix As String ] ) As String
  • MD5 ( Password As String [ , Prefix As String ] ) As String
  • SHA256 ( Password As String [ , Prefix As String ] ) As String
  • SHA512 ( Password As String [ , Prefix As String ] ) As String

Хочу избежать глупых ошибок при написании программы. Как и в каком порядке эти функции следует использовать? Аутентификацию планирую по логину и паролю. Мне не понятно как расшифровывать данные, каким должен быть ключ и что даёт префикс.

Как и в каком порядке эти функции следует использовать?

Пишу в платиновом треде.

Светоч теперь и светоч криптографии.

Deleted
()

Используй одну из реализаций протокола TLS для твоего языка.

deadNightTiger ★★★★★
()

Типичное применение указанных функций:

  • Check - ?
  • DES - шифрование файла (вот только если это не 3DES, то чур-чур, и даже если, то лучше не надо)
  • MD5, SHA256, SHA512 - контрольные суммы

обмен информацией

Передача файла? Тогда, например, AES-128. Если передача каких-то данных по сети, то как уже выше упомянули: TLS. Вот в Gambas есть gb.openssl. Но с документацией и там тоже никак. Насколько я понял, надо уметь оборачивать нативные библиотеки, и тогда не будет вопросов как такими обёртками затем пользоваться.

gag ★★★★★
()

Предложенными функциями никак

Harald ★★★★★
()
Ответ на: комментарий от Deleted

Да ладно, у него явный прогресс, он спрашивает как сделать а не посылает всех подряд.

ya-betmen ★★★★★
()

На BASIC тут не говорят.

Не такой как все? Пользуешься маргинальными языками? Учись добывать нужную информацию самостоятельно.

i-rinat ★★★★★
()

gb.crypt

Глянул я в исходник этого gb.crypt из gambas3. Нет там шифрования. DES, который вообще-то блочный шифр, там используется внутри стандартной функции crypt(), по умолчанию. Причём для генерации соли используется функция random() из стандартной библиотеки, а энтропия берётся из srandom((unsigned int)time(NULL));, запускаемого в момент первого использования. Что-то как-то халтурно авторы подошли.

Упомянутый gb.openssl ближе к реальности, там есть код, вызывающий EVP_CipherUpdate(). Но чтобы понять, как этим пользоваться из Бейсика, нужно знать и Бейсик, и Си, и обладать знаниями об устройстве модулей Gambas. Сомневаюсь, что кто-то такой тут есть.

i-rinat ★★★★★
()

что даёт префикс

Префикс это соль. Даёт неодинаковость зашифрованных данных при одинаковом ключе. Если не указать, будет просто взят рандомный (как и должно быть).

каким должен быть ключ

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

написать зашифрованный обмен данными

Дык тебе надо копать асимметричные алгоритмы RSA/Elgamal, а не симметричные вроде DES.

no-such-file ★★★★★
()
Ответ на: комментарий от i-rinat

Причём для генерации соли используется функция random() из стандартной библиотеки, а энтропия берётся из srandom((unsigned int)time(NULL));, запускаемого в момент первого использования

И какая хрен разница, если соль и так должна быть известна? Она просто не должна быть одинаковой или тривиальной.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Да, скорее всего, тут ничего с этим сделать нельзя, и использование random() не особо повредит.

i-rinat ★★★★★
()

тебе лучше ничего не шифровать, серьезно

anonymous
()

Хочу избежать глупых ошибок при написании программы.

Найми профессионала.

anonymous
()
Ответ на: комментарий от Nervous

Здесь же open sourse

А что, моно уж не опенсурс?

Исходные коды Mono открыты, но это лишь попытка альтернативной реализации ущербной технологии от ущербной корпорации.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

Исходные коды Mono открыты

Более того, открыты исходные коды https://github.com/dotnet/coreclr

ущербной технологии

А теперь обоснуй ущербность. Что именно в CLR задизайнено не так и как бы ты это сделал (если бы умел, лол)?

ymn ★★★★★
()
Ответ на: комментарий от ymn

ущербной технологии

А теперь обоснуй ущербность. Что именно в CLR задизайнено не так

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

Потребность вводить в windows технологию .Net возникла из за бардака с winAPI. Какой там бардак со времён 3.11 объяснять излишне. В том числе из за этого были множественные проблемы с безопасностью. Ибо много функций и за всем не уследишь. Но даже когда .Net ввели в windows, быдлокодеры всё равно не изменили своих привычек, и даже в солидных букмекерских конторах делали программное обеспечение которое на .Net, которое требует установки определённой версии фреймворка и обязательного отключения UAC. Хотя не отрицаю что в перспективе технология может решить задачу замены граблей с WinAPI.

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

и как бы ты это сделал (если бы умел, лол)?

Разработал бы язык промежуточного уровня из расчёта на компиляцию и исполнение в изолированных контейнерах. И компилирующие в него компиляторы популярных языков.

rezedent12 ☆☆☆
() автор топика

Зачем ты городишь ещё один велосипед? Возьми что-нибудь готовое.

StReLoK ☆☆
()
Ответ на: комментарий от rezedent12

а не попытка в точности воспроизвести Visual Basic.

То есть, это ущербная реализация Visual Basic. Который, в свою очередь...

i-rinat ★★★★★
()

И вообще лучше напиши свою реализацию RSA - для надежности.

StReLoK ☆☆
()
Ответ на: комментарий от i-rinat

а не попытка в точности воспроизвести Visual Basic.

То есть, это ущербная реализация Visual Basic. Который, в свою очередь...

Это язык похожий на Visual Basic. В gambas чего гораздо лучше сделано чем в VB.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

То есть, Gambas создаётся с оглядкой на Visual Basic, очень на него похож, но не является точной реализацией. Это и называют ущербной реализацией, разве нет? Ушёл бы он значительно в сторону, был бы просто другим языком. Но нет, держится рядом.

i-rinat ★★★★★
()
Ответ на: комментарий от rezedent12

Потребность вводить в windows технологию .Net возникла из за бардака с winAPI.

Нет.

быдлокодеры всё равно не изменили своих привычек

Причем тут быдлокодеры? Мы же про .net говорим.

Хотя не отрицаю что в перспективе технология может решить задачу замены граблей с WinAPI.

Никто эту задачу не пытался решить тогда, и не пытается решить сейчас.

из расчёта на компиляцию и исполнение в изолированных контейнерах

Зачем это нужно, и чем тот код, который генерит, например, gcc не подходит для запуска в изолированном контейнере?

ymn ★★★★★
()
Ответ на: комментарий от i-rinat

То есть, Gambas создаётся с оглядкой на Visual Basic, очень на него похож, но не является точной реализацией.

Это всего лишь соответствие определённой привычки кодирования.

Это и называют ущербной реализацией, разве нет?

«Ущербной реализацией» он был бы если бы претендовал бы на полную совместимость, но к такой не был бы способен.

Ушёл бы он значительно в сторону, был бы просто другим языком. Но нет, держится рядом.

Ну вообще то в ходе развития, он шёл в сторону java, а не пытался копировать Visual Basic. Да и компонент улучшеной совместимости с VB является подключаемым, а не прибитым гвоздями.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от ymn

Зачем это нужно, и чем тот код, который генерит, например, gcc не подходит для запуска в изолированном контейнере?

Подходит, но дело в используемых библиотеках.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

Хорошо, что не так с библиотеками, которые использует gcc для сборки программы, которая предназначена для запуска в изолированном контейнере?

Петя, ты опять виляешь и уходишь от темы разговора. В чем ущербность CLR как таковой?

ymn ★★★★★
()
Ответ на: комментарий от rezedent12

это лишь попытка альтернативной реализации ущербной технологии от ущербной корпорации.

Ехать или на шашечки наяривать? %)

Nervous ★★★★★
()
Ответ на: комментарий от ymn

В чем ущербность CLR как таковой?

В том, что у него непонятные проблемы были с .net framework. Нагородили CLR, JRE, толи дело бейсик, никаких лишних сущностей.

kravzo ★★
()
Ответ на: комментарий от ymn

Хорошо, что не так с библиотеками, которые использует gcc для сборки программы, которая предназначена для запуска в изолированном контейнере?

Тем что их много и все под прозрачный запуск в контейнере не приспособить.

Петя

Я не Петя, а Стас.

rezedent12 ☆☆☆
() автор топика

Во-первых, md5, sha256, sha512 - это НЕ шифрование. Это хэши.

Во-вторых, попробуй ответить на вопросы: между чем и чем производится шифрование? Нужно ли там шифрование, или хватит контроля целостности? Просто, если тебе прямо-таки вот крайне нужно шифрование, то придется решать еще некоторое количество проблем, которые не решаются тем инструментарием, который ты предъявил.

CaveRat ★★
()
Ответ на: комментарий от rezedent12

Ну вообще то в ходе развития, он шёл в сторону java, а не пытался копировать Visual Basic.

Вообще-то примеры кода на Gambas поразительно похожи на примеры кода на Visual Basic .NET. Это не тот BASIC, который был именно BASIC, с номерами строк и всем таким прочим. И даже не Visual Basic.

Ты вот это вот Public Sub Main() имел в виду под уходом в сторону Java? Это Visual Basic .NET.

i-rinat ★★★★★
()
Ответ на: комментарий от rezedent12

«Ущербной реализацией» он был бы

Ну OK. Удачи в поисках документации по функциям шифрования. (Её нет.)

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Ты вот это вот Public Sub Main() имел в виду под уходом в сторону Java? Это Visual Basic .NET

Конструкция Public Sub использовалась в Visual Basic 6.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

У меня нет желания на Raspberry Pi устанавливать windows server :)

Моно требует шиндоус сервер? Да ты же поехавший %)

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

Моно требует шиндоус сервер? Да ты же поехавший %)

Сначала PulseAudio, потом mono, после windows, а в конце марихуаной обколются и продукцию apple покупают. :-D

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

Ладно, копнем глубже: что в твоем понимании означает «приспособить под прозрачный запуск в контейнере»? libcurl подпадает под твои критерии? А mysql-connector-java? А почему?

Ну и сразу: а что ты подразумеваешь по «контейнером»? Просто у меня складывается впечатление, что ты понахватался отдельных слов из интернета без понимания их сути.

ymn ★★★★★
()
Ответ на: комментарий от ymn

Просто у меня складывается впечатление, что ты понахватался отдельных слов из интернета без понимания их сути.

Вы прям одной фразой обрисовали все Петины «знания»

Deleted
()
Ответ на: комментарий от ymn

Ну и сразу: а что ты подразумеваешь по «контейнером»?

Контейнеры конечно могут быть разные, но у многих из них есть фундаментальный недостаток,а точнее 2 противоположных.
1) Контейнер мешает программе удобно работать.
2) В контейнер можно и нужно тащить всякую фигню.
У меня есть представление о том как можно решить 2 эти проблемы.

В контейнере должны быть лишь несколько сокетов для внешнего взаимодействия и специфическая стандартная библиотека. Промежуточный язык внутренней компиляции в принципе не должен содержать возможностей через указатель выстрелить себе в ногу и шатать контейнер прямым обращениям к функциям POSIX. Программа в контейнере должна иметь возможность прозрачного обращения к ресурсам за пределами контейнера, однако это доступ должен полностью контролироваться пользователем, в том числе должна быть возможность подмены любого ресурса. Файла, сокета, каталога, DNS-запроса, данных GEO-локации, MAC-адреса, источника звука, датчиков и прочего.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

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

А теперь вернемся к предыдущим вопросам про либкурл, мускуль-коннектор-жаба и ущербность CLR. Ждем твоих ответов, например.

ymn ★★★★★
()
Ответ на: комментарий от ymn

А теперь вернемся к предыдущим вопросам про либкурл, мускуль-коннектор-жаба и ущербность CLR. Ждем твоих ответов, например.

Какие ответы тебе нужны?

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

ок, не обломаюсь и повторю:

1. libcurl хороша для запуска внутри контейнеров? почему?
2. mysql-connector-java пойдет? почему?
3. Предыдущие два вопроса — это мелочи. Хотелось бы услышать аргументированный ответ на вопрос: в чем проявляется ущербность CLR?

ymn ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.