Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Crypto++ и "write of address 00000008" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Файлы *.lib и *.dll http://www.cyberforum.ru/cpp/thread1439667.html
Привет всем! Вот решил начать писать проект и задался вопросом: как использовать *.lib и *.dll файлы? Я даже не знаю что в этих файлах писать! Насколько я знаю в заголовочном файле(*.h) пишутся...
C++ [c++, msvc] #pragma suppress warning Всем привет. Вижал студия 2013. Рассмотрим код: http://rextester.com/FCO39975 //Title of this code //Compiler Version 18.00.21005.1 for x86 http://www.cyberforum.ru/cpp/thread1437801.html
Как работать с исходником Wireshark? C++
Как известно, у Wireshark открытый код. Подскажите где именно (имею в виду в какой именно папке) можно достать исходной код, где он обрабатывает протоколы туннелирования типа GTPv1, а лучше если...
Visual Studio 2013, компиляция C++
Через несколько компиляций проекта студия перестаёт собирать проект, любой проект. При компиляции много раз(интервально) открывается окно MSBuild, пока я не закрываю студию через диспетчер задач....
C++ SQLConfigDataSource access драйвер для автоматической установке http://www.cyberforum.ru/cpp/thread1436852.html
SQLConfigDataSource access (odbc) кто может написать драйвер для автоматической установке очень нужно(это вроде просто), не очень понимаю в С++. Перерыл инет но всеровно не понятно как написать его....
C++ Произошел парадокс. В 2ух из 3ёх случаев не переписываются переменные Во вкладке "настройки" граничные значения перезаписывают переменные для первого случая (темпер-ры), а для 2ух других - нет. Хотя 3 идентичных случая рассматриваются. подробнее

Показать сообщение отдельно
Vstanka
3 / 3 / 1
Регистрация: 19.08.2013
Сообщений: 39

Crypto++ и "write of address 00000008" - C++

07.05.2015, 11:52. Просмотров 454. Ответов 7
Метки (Все метки)

Пытаюсь разобраться с библиотекой Crypto++ и шифрованием AES (CBC). Просмотрела кучу примеров вида:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
AnsiString TfrmMain::AesEncrypt(AnsiString PlainText)
{
    using namespace CryptoPP;
 
    std::string CipherText;
    byte AesKey[ AesKeyLength ]; //  AesKeyLength = 24
    byte AesInitVector[ AesBlockSize ]; // AesBlockSize = 16
    memset( AesKey, 0x00, AesKeyLength );
    memset( AesInitVector, 0x00, AesBlockSize );
 
    try
    {
        CryptoPP::AES::Encryption AesEncryptor(&AesKey[0], AesKeyLength);
        
    CBC_Mode_ExternalCipher::Encryption CbcEncryptor(AesEncryptor, &AesInitVector[0]);
 
        // Encryption
        CryptoPP::StringSource(
            PlainText.c_str(),
            true,
            new StreamTransformationFilter(
                CbcEncryptor,
                new StringSink( CipherText )
            ) // StreamTransformationFilter
        ); // StringSource
 
    }
    catch( const CryptoPP::Exception& e )
    {
        ShowMessage(e.what());
    }
 
    return CipherText.c_str();
}
На строке
C++
1
CryptoPP::AES::Encryption AesEncryptor(&AesKey[0], AesKeyLength);
Вылезает ошибка "Access violation at address 005C17F5 in module 'test.exe'. Write of address 00000008"
В чем может быть ошибка?

Пути к библиотеке прописаны, подключаю так
C++
1
2
3
4
5
#include "cryptopp/cryptlib.h"
#include "cryptopp/aes.h"
#include "cryptopp/modes.h"
#include "cryptopp/filters.h"
#pragma comment (lib, "cryptlib_bds.lib")
Еще может кто-нибудь объяснить про AesKey и AesInitVector? Дело в том, что задача стоит в переделке старого проекта с библиотекой, которая уже не поддерживается и на Buildere старше версии 6.0 не работает.
Раньше на основании строкового ключа длиной 24 символа, н-р, '123456789123456789123456' формировался 192битовый ключ, которым уже шифровался текст. Я так понимаю, в этом примере это AesKey, т.е. можно сделать так:
C++
1
2
AnsiString key = '123456789123456789123456';
strncpy(AesKey, key .c_str(), AesKeyLength);
А что насчет AesInitVector, откуда он берется, как формируется?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru