Ars Longa, Vita Brevis

Дочерние рубрики:
  • Нет рубрик

Статьи из рубрики "C/C++"

Советы и программы на C/C++ для разных операционных систем

Имеется кусок кода:

[-]
View Code C++
#include <string>
 
class Base {
public:
    Base(void) {}
    virtual ~Base(void) throw() {}
};
 
class Derived : public Base {
public:
    ::std::string s;
};
 
int main(int, char**)
{
    return 0;
}

При компиляции в GCC выдает интересную ошибку:

[-]
View Code Bash
g++ test.cpp
test.cpp:9: error: looser throw specifier for ‘virtual Derived::~Derived()test.cpp:6: error:   overriding ‘virtual Base::~Base() throw ()

Самое интересное, что если сделать Derived::s типа, например, int, то ошибка исчезнет.

В чем же дело? Читать статью «GCC и throw-спецификация у автоматически сгенерированного виртуального деструктора» полностью…

Май 6, 2008

Наш ответ libresolv

Рубрика: C/C++, Linux
Метки: ,
Vladimir

Недавно мне пришлось заняться изучением интерфейса библиотеки libresolv, отвечающей за формирование DNS-запросов и получение и разбор ответов (хотя разбор — это громко сказано). Так получилось, что нормальной внятной документации по API-функциям с примерами использования я найти не смог (может, я не там искал). И хотя код — лучшая документация, окончательно разобраться с форматом возвращаемых данных я смог только после изучения RFC, посвященных DNS. Читать статью «Наш ответ libresolv» полностью…

Апр 22, 2008

Простые числа от 2 до 1,000,000

Рубрика: C/C++
Метки: ,
Vladimir

В поисках простых чисел Софи Жермен написал программу, которая ищет простые числа (я их собирался использовать для реализации решета). От нечего делать я пошёл дальше и решил найти все простые числа до миллиона. А также проверить утверждение, что сумма всех простых чисел до миллиона есть простое число. Читать статью «Простые числа от 2 до 1,000,000» полностью…

Криптографический протокол Диффи–Хеллмана (Diffie-Hellman Key Exchange) — алгоритм, позволяющий двум сторонам получить общий секретный ключ, используя частично защищенный канал связи. Под частично защищенным понимается канал, данные в котором защищены от модификации, но не от прослушивания (как утверждает Wikipedia, такие условия имеют место довольно часто).

В данной статье я приведу реализацию криптографического протокола Диффи-Хеллмана на языке С с использованием библиотеки GMP. Читать статью «Реализация криптографического протокола Диффи-Хеллмана обмена ключами с использованием GMP» полностью…

Не секрет, что список сервисных процессов (служб), отображаемый Windows (например, при помощи консоли services.msc), является далеко не полным. Когда-то давно меня заинтересовало, как же можно посмотреть, какие службы/драйвера/системные процессы живут в системе. Читать статью «Кто живёт у нас в системе, или, как просмотреть полный список сервисных процессов в Windows» полностью…

Позавчера возникла проблема: нужно было срочно переставить Windows XP (ибо VMWare так больно упала, что Windows пал смертью храбрых). Всё хорошо, но вот родного инсталляционного диска под рукой не было, а инсталлятор жил на NTFS-разделе (кстати, DOS-драйвер для чтения NTFS почему-то оказался бессильным). По счастью, на FAT32-диске нашелся образ загрузочного диска. Одна проблема: образ был сохранен Nero и записан в формате NRG. И, как на зло, не было ничего, что понимает NRG-образы. А так как Internet тоже не было (какой там Internet при загрузке с Реаниматора!), пришлось думать, как можно с ограниченными средствами преобразовать NRG-образ в ISO. Читать статью «Преобразование образов NRG в ISO» полностью…

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

Например, программист на сайте uk-swingers.com шифровал номера кредитных карточек (!), используя простой алгоритм RC4 и постоянный ключ. Ломалось очень просто. К счастью, уже исправлено :-) Другие товарищи использовали сложение по модулю два для шифрования важных данных. Третий товарищ защитил диплом по безопасности, и шифрование секретной базы данных опять-таки выполнялось по модулю два. Четвертый шифровал AES'ом тонны информации (в режиме ECB, разумеется), при этом не потрудившись даже ее сжать. Этот печальный список можно продолжать и продолжать…

Я решил провести наглядный эксперимент, чтобы выяснить, насколько эффективны различные алгоритмы шифрования в различных режимах работы. Читать статью «Режимы шифрования данных, или, когда сильный шифр не спасает» полностью…