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

C++

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

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

10.05.2014, 12:51. Просмотров 1112. Ответов 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). Кто может помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2014, 12:51     Шифрование AES через библиотеку Openssl
Посмотрите здесь:
AES шифрование C++
C++ Aes шифрование
Шифрование по алгоритму AES в С++ Builder C++ Builder
C++ Cryptopp шифрование AES ECB
C++ Builder AES шифрование (длинный текст)
C++ Хэширование md5 и шифрование AES
C++ WinAPI Обмен ключами по алгоритму Diffie Hellman, шифрование AES
C++ Ошибка при записи в файл через библиотеку io.h
Через какую библиотеку можно работать с jpeg? Visual C++
C++ Четырехмерный массив (реализация через библиотеку vector)
C++ Как сгенерировать библиотеку dll через visual studio 2013
C++ Как в windows сделать динамическую библиотеку из файлов .cpp через командную строку ?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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