В прошлой заметке я рассказывал о возможности создать алгоритм шифрования, основывающийся на использовании хеш-функций, позволяющий шифровать несколько текстов с различными ключами в один неразделимый информационный поток, без возможности определить сколько и каких сущностей было зашифровано. Теперь детали алгоритма стали ясны, что позволило создать утилиту, реализующую описанный метод. В этой заметке я поделюсь утилитой, проведу анализ алгоритма и предложу (довольно поверхностные) обоснования криптостойкости метода.
Читать полностью »
Рубрика «c++» - 245
Многозначное шифрование с использованием хеш-функций: продолжение
2012-11-07 в 17:25, admin, рубрики: c++, Алгоритмы, анонимность, информационная безопасность, коллизии, недоказуемость, хеш-функции, шифрование, метки: c++, анонимность, коллизии, недоказуемость, хеш-функции, шифрованиеСоздание Cocos2D-x проекта в Marmalade SDK
2012-11-06 в 16:47, admin, рубрики: c++, cocos2d-x, game development, marmalade, mobile development, метки: c++, cocos2d-x, marmalade
Некоторое время назад RIM совместно с Marmalade проводили акцию по которой и мне удалось получить планшет Blackberry Playbook. По условиям акции в течение полугода с момента регистрации необходимо разработать и загрузить в Blackberry App World игру сделанную при помощи Marmlade SDK. После изучения в сети некоторого количества материала об этом SDK я наткнулся на записи о том что есть возможность использовать Cocos2D-x, что возможно сократило бы мне время на разработку(хотя я не имею опыта работы ни с Marmalade ни с Cocos2D-x). Далее я скачал последний релиз Cocos2D-x и не обнаружил в нём никаких следов возможности взаимодействия с Marmalade SDK.
Читать полностью »
Nested Diagnostic Context, log4cpp и Boost asio
2012-11-04 в 14:54, admin, рубрики: c++, Программирование, метки: c++В данной статье я хочу показать, как можно использовать NDC в асинхронных операциях на примере log4cpp и boost.asio
Nested Diagnostic Context (NDC) — контекст, который добавляется в лог. Этот контекст может использоваться для дальнейшей фильтрации лог файла. Особенно это полезно, если производится несколько операций, и эти операции связаны между собой, например: выборка данных из БД, обработка, упаковка в сообщение, передача сообщения по сети клиенту и т.д… Если таких операций много и происходят они параллельно (или асинхронно), то по логу иногда бывает тяжело восстановить последовательность операций. Для этого и используется NDC: вначале мы создаем уникальный(псевдо) идентификатор, и затем помечаем каждую операцию логгирования в нашей цепочке этим идентификатором.
В теории все хорошо: генерируем уникальный ID и передаем его в логгер, однако на практике возникает несколько проблем:
- Реализация NDC в библиотеке log4cpp основана на механизме Thread Local Storage (Thread Specific Ptr), таким образом NDC хранится только для одного потока. Соответственно встает вопрос передачи NDC между потоками
- Из первого пункта также вытекает следующая проблема: асинхронные операции, например в boost::asio::io_service. Так как asio позволяет в одном (или нескольких) потоках выполнять множество асинхронных операций, то из-за особенностей log4cpp мы не сможем увидеть в логе правильный NDC. Нужен специальный механизм, который обеспечит корректность NDC в асинхронных операциях asio
RAII и делегирующие конструкторы в C++11
2012-11-04 в 4:21, admin, рубрики: c++, c++11, constructor, raii, метки: c++, c++11, constructor, delegaте, raiiВ этом посте пойдет речь об одной интересной фичи в C++11, которая называется делегирующие конструкторы (delegating constructors): почему она интересна, и как ее можно применить для более эффективного управления ресурсами, т.е. реализации идиомы RAII.
Простая автоматизация версионности и сборки C/C++ проекта на Ruby
2012-11-03 в 11:34, admin, рубрики: c++, NSIS, ruby, svn, Visual Studio, Программирование, метки: c++, NSIS, ruby, svn, Visual Studio Предположим, что, как и в моем случае, вы впервые столкнулись с необходимостью
минимизации телодвижения на пути от SVN исходников к NSIS инсталлеру с попутной автоинкрементацией версии проекта. В ручном же режиме это выглядит примерно так:
- Прописываем новую версию в соответствующем исходнике проекта. Нужно ли это для пользователей или в качестве диагностической информации – несущественно.
- Собираем проектные файлы, необходимые для setup.
- Обновляем версию внутри nsi-файла, поскольку используем ее в окнах на этапе установки и в имени результирующего setup-файла.
Уязвимость подобной практики обнаруживается при авралах, когда один или несколько из этих пунктов оказываются пропущенными, в результате чего у пользователя на руках остаются несогласованные между собой компоненты.
Не претендуя на новизну, предлагаемые ниже скрипты автоматизируют сборку C/C++ Visual Studio проектов практически в один клик и будут полезны, прежде всего, при одиночной разработке.
Презентация Герба Саттера про Visual C++ и C++11 на конференции BUILD
2012-11-03 в 0:35, admin, рубрики: c++, c++11, visual c++, метки: c++11, visual c++
Фото Channel9
Только что на Channel 9 закончилась презентация Герба Саттера на конференции BUILD в Редмонде. Кому интересен конспект его выступления с последними новостями про Visual C++ и C++11 в целом — прошу под кат.
Чистый C++
2012-11-01 в 12:34, admin, рубрики: c++, Блог компании Intel, Программирование, учебник, метки: c++, учебник
Давайте знакомиться.
Я — Серега. (На фото — не я). Работаю в Intel. Вместе с коллегами пишу GPA. Программирую вот уже скоро 20 лет как. Ну, это если считать со школы. Последнее время накопилось много разных мыслей, которыми хочется с кем-то поделиться. Рассказать кому-то о том, что такое хорошо, а что такое плохо. Рассказывать можно и пустоте (так даже спокойней, никто не отвлекает и не суется со Своим Самым Правильным мнением), но это не очень эффективно. Поэтому буду сливать свои мысли сюда. Вдруг кому-нибудь пригодится…
В качестве введения
Многие считают, что есть два родственных языка — C и C++. При этом C++ — это якобы тот же C, только с двумя плюсами, т.е. ООП. Это очень распространенное заблуждение. «На самом деле все не так». C и С++ — это совершенно разные языки, не имеющие между собой практически ничего общего. Однако исторически так сложилось, что C++ синтаксически совместим с C, т.е. может компилировать программы, написанные на C. Из-за этой особенности четкая грань между языками отсутствует и существует множество кода, написанного на жуткой смеси этих языков. Причем пропорция этой смеси может меняться даже в рамках одной программы у одного автора. Читать полностью »
Подкаст «Заметки о Qt» s02e02
2012-11-01 в 10:00, admin, рубрики: c++, Digia, QML, qt, qt creator, Qt Software, qt5, конкурс, Программирование, метки: c++, Digia, QML, Qt, qt creator, qt5, конкурс Мы с Vass записали и выложили вторую серию второго сезона подкаста «Заметки о Qt».
Сам подкаст на rpod.ru — qt-notes.rpod.ru/287388.html
Результаты конкурса внутри!
Читать полностью »
Программирование и марихуанна…
2012-10-31 в 17:48, admin, рубрики: c++, javascript, джигурда, конец света, мдк, ненормальное программирование, путин, сиськи, метки: джигурда, конец света, мдк, путин, сиськиВозможно для многих из вас неизвестна данная методика, но наши западные коллеги применяют ее уже порядка 5-ти лет. Несложно догадаться, что алгоритмы продумываются программистами под действием психотропных веществ, наибольшую популярность приобрела марихуанна (как известно лсд на 2ом месте по популярности), этот метод впервые был применен неким Алексеем Елизаровым (vk.com/alex.elizarov) aka beauty_free 30 февраля 2005 года. Он же описывал воздействие Читать полностью »
Асинхронный пинг с помощью Boost.Asio
2012-10-31 в 8:20, admin, рубрики: boost.asio, c++, Блог компании Positive Technologies, пингер, разработка, метки: boost.asio, пинг, пингерОдним из этапов сканирования узла на наличие уязвимостей является определение его сетевой доступности. Как известно, сделать это можно несколькими способами, в том числе и посредством команды ping.
Для одного из проектов по анализу защищенности в организации с большим количеством рабочих станций нам понадобилось разработать собственный «пингер». Читать полностью »