Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс дек 17, 2017 8:56 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 35 сообщений ]  На страницу 1 2 3 След.
Автор Сообщение
СообщениеДобавлено: Пт апр 16, 2010 10:28 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 25, 2009 4:45 pm
Сообщения: 788
Добрый день!
Сначала писал реализацию на С+inline asm, потом подумал, надо сделать библиотеку и для всей Колибри, поэтому переписываю на fasm
Пока написал и довожу до ума SHA256, CRC32, RC6.
В очереди стоит LZMA как архивация.

Реализую все в виде каждого отдельного файла с одной-двумя экспортируемыми процедурами:
sha256.asm, rc6.asm и т.д.

Собираюсь использовать вызовы из нее в SHELL.

Во первых, вопрос: есть ли какие либо особенности для написания алгоритмов так, чтобы можно было по типу системной библиотеки сделать?
Второй вопрос: какие в ПЕРВУЮ очередь надо добавить алгоритмы?
Естественно временной ресурс ограничен, поэтому по 1-2 алгоритма шифрования, 1-2 архивации ну и хэш

Сам планирую еще реализовать Trivium (поточный шифр), RSA и простенький zip
Код выложу сюда в течение нескольких дней.


Вернуться к началу
СообщениеДобавлено: Пт апр 16, 2010 11:10 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
В archiver.obj есть реализация SHA256 и AES, правда, наружу они не торчат.
Процедуры для RSA писал halyavin, они есть в cpuid (где используются для тестов скорости).
Реализация MD5 тоже есть (svn://kolibrios.org/programs/develop/ex ... nk/md5.asm), правда, код там мог бы быть и получше.

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
СообщениеДобавлено: Пт апр 16, 2010 11:45 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 25, 2009 4:45 pm
Сообщения: 788
А где исходники этого archiver.obj? В svn я что-то не нашел...
Ксати такой вопрос как оптимально сложить числа больше чем 32бита?
кстати RC6 - это не AES, так что тоже теперь почти есть.
Ну md5 - уже ушел в прошлое, а вот sha1 надо написать для совместимости


Вернуться к началу
СообщениеДобавлено: Сб апр 17, 2010 12:15 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
XVilka писал(а):
А где исходники этого archiver.obj? В svn я что-то не нашел...

Они там есть, но в неочевидном месте, связанном с тем, что изначально он был только плагином к kfar, а теперь в основном является плагином. svn://kolibrios.org/programs/fs/kfar/kfar_arc/.
XVilka писал(а):
Ксати такой вопрос как оптимально сложить числа больше чем 32бита?

64-битное сложение edx:eax += ebx:ecx:
Код:
add eax,ecx
adc edx,ebx

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
СообщениеДобавлено: Сб апр 17, 2010 10:07 am 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Вт янв 15, 2008 11:27 am
Сообщения: 750
XVilka
кстати, с точки пользователя - программы и библиотеки на fasm переписывать не обязательно. компилятор Си выдаёт результирующие файлы не намного хуже ассемблерных (по размеру и скорости исполнения), зато скорость разработки существенно повышается. хотя согласен, разработка на Си выпадает из концепции KOS.


Вернуться к началу
СообщениеДобавлено: Сб апр 17, 2010 2:04 pm 
XVilka
Цитата:
Пока написал и довожу до ума SHA256, CRC32, RC6.
В очереди стоит LZMA как архивация.

Весьма нужная вещь. Успехов в реализации!

diamond
Цитата:
Они там есть, но в неочевидном месте, связанном с тем, что изначально он был только плагином к kfar, а теперь в основном является плагином.

Ну, вот уже как минимум 2 человека. Может таки переименуешь? :mrgreen:

Albom
Цитата:
хотя согласен, разработка на Си выпадает из концепции KOS.

Как только ты или кто-нибудь напишут компилятор Си++ (и прочего ЯВУ) под Колибри оно перестанет выпадать, а до этого это все пустые разговоры.


Вернуться к началу
   
СообщениеДобавлено: Вс апр 18, 2010 1:29 am 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 25, 2009 4:45 pm
Сообщения: 788
По поводу переписывания на fasm - криптоалгоритмы всегда стараются писать на ассемблере, кроме того при написании на ассемблере начинаешь понимать суть самого алгоритма. Кроме того думаю поскольку основная система написана на fasm, вполне резонно сделать библиотеку доступной любой программе, и легкой для расширения\улучшения другими. Весь код под public domain выложу, чтобы не было проблем.
Постараюсь реализовать все необходмые криптоалгоритмы для будущей реализации ssh )
Часть кода уже есть, но выкладывать пока не буду - не люблю краснеть ))) Требуется время на "вылизывание".

Да, поскольку на ассемблере x86 начал писать совсем недавно, код может быть не оптимальным, но это лучше чем его отсутствие ))

P.S. сам шелл буду на си пилить и дальше.
P.P.S. для ускорения разработки md5 и aes взял из указанных мест, надеюсь никто не против (шапки с лицензиями сохраняться, только код поправлю)


Вернуться к началу
СообщениеДобавлено: Вс апр 18, 2010 2:47 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Albom писал(а):
компилятор Си выдаёт результирующие файлы не намного хуже ассемблерных (по размеру и скорости исполнения)

По скорости - возможно. По размеру - нет. Потому что сейчас разработчиков компиляторов интересует практически только скорость работы сгенерированного кода, оптимизация по размеру получается в основном как приложение в случаях, когда какие-то преобразования улучшают и скорость, и размер, а как самостоятельная задача оптимизация по размеру идёт по остаточному принципу. Особенно для gcc и g++ (у MS с этим заметно получше, icc не особо смотрел). Примеры: при компиляции одного и того же кода с одними и теми же опциями в gcc3 и gcc4 более новый компилятор генерирует код большего размера (проверял лично на Колибри-версиях dosbox и atikms); опция -fomit-frame-pointer имеет два состояния, выключенное (при этом оптимизация не применяется) и включённое (при этом оптимизация применяется ко всем функциям, даже если она раздувает размер функции - ведь скорость повышается за счёт отказа от пролога, а на размер кода разработчикам наплевать); g++ при определённых (достаточно распространённых) условиях тупо дублирует код конструктора, создавая две идентичные функции (одна из них никогда не вызывается, пенальти по скорости отсутствует, а на размер никто не смотрит).


Вернуться к началу
СообщениеДобавлено: Вт апр 27, 2010 7:46 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн мар 20, 2006 10:44 am
Сообщения: 557
XVilka писал(а):
...криптоалгоритмы всегда стараются писать на ассемблере

ага, особенно факторизацию и длинную арифметику ))
Посмотри FreeLIP вряти кто то согласится повторить это на ассемблере.


Вернуться к началу
СообщениеДобавлено: Чт июн 03, 2010 4:10 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Ghost
Дык GMP же. Там длинная арифметика как таковая как раз на ассемблере (точнее, на ассемблерах для разных архитектур).


Вернуться к началу
СообщениеДобавлено: Пт июн 04, 2010 8:31 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Пт июн 30, 2006 9:01 am
Сообщения: 1232
An implementation of the DES encryption algorithm would also be much appreciated

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Вернуться к началу
СообщениеДобавлено: Пт июн 04, 2010 11:45 pm 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Вт янв 15, 2008 11:27 am
Сообщения: 750
Не отказался бы от кодера/декодера base64. Как жаль, что у меня сейчас нет свободного времени для Колибри!!! :(


Вернуться к началу
СообщениеДобавлено: Вс июн 06, 2010 7:11 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн мар 20, 2006 10:44 am
Сообщения: 557
diamond хм, не встречался раньше с этой библиотекой, посмотрел, действительно асм встаки, но они занимают процентов десять от всего кода )

Albom для чего тебе base64? Он же просто в реализации.


Вернуться к началу
СообщениеДобавлено: Вс июн 06, 2010 8:37 am 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Вт янв 15, 2008 11:27 am
Сообщения: 750
да, base64 очень прост. кодер/декодер на Си - около 50 строк... может когда-нибудь и перепишу на асме...


Вернуться к началу
СообщениеДобавлено: Пн июн 07, 2010 12:53 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Ghost
90% времени занимают 10% кода. В случае работы с большими числами это примитивные операции - собственно длинная арифметика, сложение/вычитание/умножение/деление, а прочие, опирающиеся на них (например, возведение в степень и алгоритмы факторизации), сами по себе уже не критичны ко времени исполнения, вот их и пишут на сях.

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 35 сообщений ]  На страницу 1 2 3 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB