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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Заказать программу АРМ Библиотекаря http://www.cyberforum.ru/cpp/thread1439984.html
помогите пожалуйста написать программу арм библиотекаря) о цене договоримся) очень срочно нужно
C++ Создать два класса: вектор и матрица Создать два класса вектор (long *) и матрица (long **). Определить конструкторы - по умолчанию, с параметром, для класса матрица с двумя параметрами, копирования, деструкторы. Определить функцию умножения матрицу на вектор. http://www.cyberforum.ru/cpp/thread1439783.html
Файлы *.lib и *.dll C++
Привет всем! Вот решил начать писать проект и задался вопросом: как использовать *.lib и *.dll файлы? Я даже не знаю что в этих файлах писать! Насколько я знаю в заголовочном файле(*.h) пишутся например прототипы функций. А потом в каком либо *.cpp файле обычно определяется та или иная функция, которая была объявлена в заголовочном файле(*.h). Начал гуглить про *.lib и *.dll файлы и ничего не...
SFML Манипуляция с размерами в SFML + TGUI
Появилась нужна в том, чтобы кнопка была одинакового размера при разных разрешениях экрана. Делал проекты при разрешении 2560 на 1440, но перенёс тот же проект на экранчик гораздо меньше и естественно размеры были не подогнаны под разрешение(например, кнопка была на пол экрана). Создаю окно RenderWindow MainWindow(VideoMode::getDesktopMode(), "New",Style::Fullscreen); // getDesktopMode()...
C++/CLI WinForms Готовая игра Пятнашки (Исходник) http://www.cyberforum.ru/cpp/thread1439169.html
Доброго времени суток, частенько видел на Вашем форуме группы с просьбами обьяснить, показать или скинуть пример игры Пятнашки на языке C++ Windows Forms, но нормального, адекватного примера я так и не нашел(да, я тоже искал т.к. самому нужно было) и сделал сам. В архиве код программы. Enjoy) P.S.: Делал в V.S. 2008
C++ [c++, msvc] #pragma suppress warning Всем привет. Вижал студия 2013. Рассмотрим код: http://rextester.com/FCO39975 //Title of this code //Compiler Version 18.00.21005.1 for x86 подробнее

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

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

07.05.2015, 11:52. Просмотров 423. Ответов 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, откуда он берется, как формируется?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru