Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > [bcb2009] Crypto++ 5.5.2 |
Автор: MuForum 13.1.2009, 00:04 | ||
Доброе время суток! - Работаю на 'CodeGear™ C++Builder® 2009 Version 12.0.3210.17555' (SP1). - Столкнулся со следующей проблемой, мне необходимо осуществить шифровку основного трафика при помощи алгоритма http://ru.wikipedia.org/wiki/Advanced_Encryption_Standard, проверку на аутентификацию делать при помощи http://ru.wikipedia.org/wiki/%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D1%8C, выбрал алгоритм для этого http://ru.wikipedia.org/wiki/RSA. - Если AES ещё кое как смог реализовать (криво/косо), то во втором случае плаваю ###... - Решил выбрать бесплатный пакет http://www.cryptopp.com/ версии '5.2.2', но при попытке скомпилировать проект вылетает ошибка на этом куске кода: (queue.h)
- Поиск в google ничего не дал, даже на офф.форуме посоветовали только переставить студию. (Что естественно не помогло) - Как можно решить или выйти из этой ситуации? # Добавлено: Есть ещё библиотека http://openssl.org/, но к сожалению тут тоже не без чудес =( |
Автор: Alca 13.1.2009, 10:43 |
Попробуй в студии скомпилить. |
Автор: MuForum 13.1.2009, 13:58 |
#2, Alca - Не понимаю, к чему это было сказано? - Crypto++ - это библиотека с готовыми алгоритмами, это не .dll! |
Автор: Alca 13.1.2009, 14:04 | ||||
Выложи проект с этой либой, попробую у себя поюзать. P.S.
А чё есть либа под C++Builder 2009? Поддерживается вроде только 2007, если 5.5.2 это конечно последний релиз. |
Автор: MuForum 13.1.2009, 14:21 |
#4, Alca - http://www.cryptopp.com/cryptopp552.zip на данный момент является самой последней версией данного продукта. P.S. -> Проблема в том, что мне нужно сделать проект именно под BCB 2009 =( - Эх, как было хорошо на 6... |
Автор: Alca 13.1.2009, 14:29 |
А на шестерке 2006 или 2007 копилиться? |
Автор: MuForum 13.1.2009, 14:30 | ||
Не пробовал, так как снёс. - Работать на 6 не могу, условия были только на 2009 =( - Вот и бьюсь головой АП Стену.... |
Автор: Alca 13.1.2009, 14:32 |
А ты им втыкни что написано в Readme.txt. ![]() Я бы сначала попробывал на 2007, если бы заработало, то можно было бы плясать дальше. Или попробуй OpenSSL. |
Автор: MuForum 13.1.2009, 14:42 |
#8, Alca - Да к сожалению я что-то не могу разобраться с этой библиотекой 'OpenSSL'. - Не могу понять как использовать. (Google особо не помог в этом) |
Автор: Alca 13.1.2009, 14:53 | ||
Подключаешь нужные хидера и смотришь как описаны нужные тебе функции. Потом их юзаешь. К примеру так :
|
Автор: vikaz 13.1.2009, 15:31 |
MuForum, а ты не хочешь попробовать использовать CryptoAPI? В нем есть все, что тебе нужно, как мне кажется. Ты какую длину ключа хочешь использовать использовать? |
Автор: MuForum 13.1.2009, 15:59 | ||
Длину ключа 256 бит. - не хочется привязываться к системе... |
Автор: MuForum 13.1.2009, 22:50 | ||||||||
- Это понятно, но проблема в другом, в этом файле не сделано всё в классе, а сделано разбросано без класса, и когда я пытаюсь вызвать функцию, мне компилятор выдаёт следующее:
вызываю следующим образом:
|
Автор: Romikgy 14.1.2009, 00:04 |
видать пространство имен не обозначено |
Автор: vikaz 14.1.2009, 07:35 | ||
немного не понял. Ты что разрабатываешь кросс-платформенную программу? Если да, то тогда вопросы отпадают. А если нет!!!!! Зачем таскать с собой библиотеки, если все это есть в системе, тем более, что длина ключа всего 256 бит.... Зато ты с легкостью сможешь сменить при необходимости алгоритм, без глобальной переписки кода. Я просто сам разрабатываю программу, которая будет шифровать трафик, лично я остановился на CryptoAPI. ![]() |
Автор: Alca 14.1.2009, 10:09 |
vikaz, можешь исходники засветить? |
Автор: vikaz 14.1.2009, 10:16 |
Легко. Только там нет комментариев, извините, так получилось. |
Автор: MuForum 14.1.2009, 13:06 | ||
Благодарю, но у меня возникает вопрос, а что помешает пользователю подменить эти две функции в системе? - Через замену первых 5 байт функции. |
Автор: vikaz 14.1.2009, 13:21 |
У тебя видимо не пользователи, а хакеры какие-то. Ну во-первых, я не знаю, что у тебя за программа и какие функции ты на нее возлагаешь. Если шифровать трафик, то пусть меняют. Сервер/клиент просто отошьет этот пакет и все, так как не сможет его расшифровать. |
Автор: ksili 19.1.2009, 06:56 |
vikaz, хочу тебя спросить. Во всех примерах с CryptoAPI, в том числе и у тебя, использутся криптопровайдер PROV_RSA_FULL. 1) Это так потому, что он всегда присутстсвует в системе? Или когда-то может и отсутствовать? 2) Если мне нужно использовать не RSA или AES, а например 3DES, может ли это делать этот криптопровайдер? |
Автор: vikaz 21.1.2009, 07:13 |
ksili конечно можно. ТО что в примере используется RSA, это просто для примера, вот какие алгоритмы шифрования идут вместе с операционной системой: Стандартные криптопровайдеры и алгоритмы CryptoAPI предоставляет следующие стандартные криптопровайдеры: • Microsoft Base Cryptographic Provider • Microsoft Strong Cryptographic Provider • Microsoft Enhanced Cryptographic Provider • Microsoft AES Cryptographic Provider • Microsoft DSS Cryptographic Provider • Microsoft Base DSS and Diffie-Hellman Cryptographic Provider • Microsoft DSS and Diffie-Hellman/Schannel Cryptographic Provider • Microsoft RSA/Schannel Cryptographic Provider Все эти CSP отличаются друг от друга своими типами, которые определяются набором параметров, включающим: • алгоритм обмена сессионным (симметричным) ключом. • алгоритм вычисление цифровой подписи • формат цифровой подписи • схема генерирования сессионного ключа по хешу • длина ключа В CryptoAPI имеется такое понятие, как алгоритм шифрования, и многие алгоритмы поддерживают сразу несколько длин ключей. Длины ключей RSA алгоритмов вычисления цифровой подписи и обмена ключами могут варьироваться от 384 до 16384 бит с интервалом в 8 бит. Также поддерживаются алгоритмы шифрования AES (128, 192, 256) и вычисления хешей MD2, MD5, SHA, MAC, MAC. |