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

C++

Войти
Регистрация
Восстановить пароль
 
Krab91
1 / 1 / 0
Регистрация: 12.10.2013
Сообщений: 53
#1

Шифрование AES через библиотеку Openssl - C++

10.05.2014, 12:51. Просмотров 1391. Ответов 0
Метки нет (Все метки)

Есть вот такой код:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
void aes_encrypt()
{
    int outlen, inlen;
    FILE *in = fopen("data.dat", "rb"), *out = fopen("encrypt.aes", "wb");
    unsigned char inbuf[BUFSIZE], outbuf[BUFSIZE];
    unsigned char key[32]; /* 256- битный ключ */
    unsigned char iv[8]; /* вектор инициализации */
    const EVP_CIPHER * cipher;
    EVP_CIPHER_CTX ctx;
    /* обнуляем структуру контекста */
    EVP_CIPHER_CTX_init(&ctx);
    /* выбираем алгоритм шифрования */
    cipher = EVP_bf_ofb();
    /* инициализируем контекст алгоритма */
    EVP_EncryptInit(&ctx, cipher, key, iv);
    /* шифруем данные */
    for(;;)
    {
        inlen = fread(inbuf, 1, BUFSIZE, in);
        if(inlen <= 0) break;
        EVP_EncryptUpdate(&ctx, outbuf, &outlen, inbuf, inlen);
        fwrite(outbuf, 1, outlen, out);
    }
    EVP_EncryptFinal(&ctx, outbuf, &outlen);
    fwrite(outbuf, 1, outlen, out);
    EVP_CIPHER_CTX_cleanup(&ctx);
    fclose(in);
    fclose(out);
}
 
void aes_decrypt()
{
    int outlen, inlen;
    FILE *in = fopen("encrypt.aes", "rb"), *out = fopen("decrypt.aes", "wb");
    unsigned char inbuf[BUFSIZE], outbuf[BUFSIZE];
    unsigned char key[32]; /* 256- битный ключ */
    unsigned char iv[8]; /* вектор инициализации */
    const EVP_CIPHER * cipher;
    EVP_CIPHER_CTX ctx;
    /* обнуляем структуру контекста */
    EVP_CIPHER_CTX_init(&ctx);
    /* выбираем алгоритм шифрования */
    cipher = EVP_bf_ofb();
    /* инициализируем контекст алгоритма */
    EVP_DecryptInit(&ctx, cipher, key, iv);
    /* шифруем данные */
    for(;;)
    {
        inlen = fread(inbuf, 1, BUFSIZE, in);
        if(inlen <= 0) break;
        EVP_DecryptUpdate(&ctx, outbuf, &outlen, inbuf, inlen);
        fwrite(outbuf, 1, outlen, out);
    }
    EVP_DecryptFinal(&ctx, outbuf, &outlen);
    fwrite(outbuf, 1, outlen, out);
    EVP_CIPHER_CTX_cleanup(&ctx);
    fclose(in);
    fclose(out);
}
Но мне бы сделать так чтобы функция считывала не из файла, а с массива символов или со строки.Чтоб функция принимала(*char или *str). Кто может помогите пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2014, 12:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шифрование AES через библиотеку Openssl (C++):

Как в windows сделать динамическую библиотеку из файлов .cpp через командную строку ? - C++
Здраствуйте, вопрос состоит в следующем, как у Виндовс через командную строку сделать динамеческую библиотеку из файлов .cpp. ...

SIGINT с OpenSSL - C++
Приветствую всех! Натыкаюсь в программе (обычная однопоточная консолька, делащая несколько запросиков) на SIGINT. Программа использует...

libcUrl с OpenSSL на MinGW - C++
Помогите! Никак не могу разобраться с libcUrl с OpenSSL, просто libcUrl компилю без проблем, и использую, но нужнен https. ...

AES шифрование (длинный текст) - C++ Builder
Не пойму в чем проблема, шифрование на коротких предложениях работает нормально. Как только загружаю длинный текст, его шифрует (как...

Шифрование по алгоритму AES в С++ Builder - C++ Builder
Делаю программу для шифрования текстовых файлов. Уже реализовал шифрование Цезаря и XOR. Теперь хочу добавить возможность шифрования по...

Установка OpenSSL - C++ Builder
Здравствуйте! Как установить OpenSSL на билдер. Скачал с сайта исходники, но там одни заголовочные файлы. Или я не то качал. Объясните плиз...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2014, 12:51
Привет! Вот еще темы с ответами:

OpenSSL без dll - C++ Builder
Можно ли как то работать с OpenSSL без двух dll файлов libeay32 и ssleay32, а то устал их рядом с программа все время таскать может можно...

Шифрование и дешифровка AES через OpenSSL - Криптография
Всем привет. Попытался применить для шифрования следующий код: unsigned char* plaintext = (unsigned...

Как подключить к php библиотеку openSSl? - PHP
Добрый день, Сразу извиняюсь, если не совсем корректно излагаю вопрос. Появилась необходимость работы с Эцп (электронной цифровой...

Шифрование AES - Алгоритмы
Прочитал статью на одном из сайтов и услышал такую тему, что такие алгоритмы, как AES-28; AES-192 и AES-256 используют ключи и длины...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru