LINUX.ORG.RU

AES шифрование

 , , ,


0

1

Доброго времени суток. Опыта применения библиотек шифрования в своих проектах не было. Посмотрел таких монстров как OpenSSL-crypto, Crypto++, Botan и ужаснулся их документации с учетом популярности. Мне просто нужно симметриченое шифрование, поэтому решил взять tiny-AES-c. Но в readme гитхаба нет примеров с использованием, поэтому прошу раскрыть смысл этих обозначений: ctx, iv, buf, length, - и поделиться опытом использования, если имеется.


На openssl без проблем aes делается. Не бери ни в коем случае маргинальщину, которой никто не пользуется. iv - инициализационный вектор, например в AES-CBC ты для первого блока генершиь случайный, а для последующих используешь в качестве iv предыдущий блок. ctx - объект, хранящий состояние алгоритма шифрования

annulen ★★★★★ ()

Если любишь C++-way то Cryptopp. А так в общем случае openssl + биндинги

lberserq ()
Ответ на: комментарий от annulen

AES-CBC

2018 год уже на дворе, openssl давео поддерживает aes-gcm

lberserq ()
Ответ на: комментарий от lberserq

надо о будущем думать, вторая версия не за горами

anonymous ()

В составе библиотек POCO есть классы для шифрования.

rumgot ★★★★★ ()

Я пока не использовал, но bearssl вроде прикольный.

itn ★★ ()
Ответ на: комментарий от lberserq

Можно подумать что в GCM IV сильно отличается по смыслу. Да и вообще аутентифицированное шифрование нужно не всем и не всегда

annulen ★★★★★ ()

прошу раскрыть смысл этих обозначений: ctx, iv, buf, length

Сам этой либой не пользовался, но там же есть пример в файле test.c:

// Генерируешь ключ длинной 16 байт для aes128
uint8_t key[] = { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c };
// Генерируешь вектор инициализации, длина как у ключа
uint8_t iv[]  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f };
// Создаёшь контекст
struct AES_ctx ctx;
AES_init_ctx_iv(&ctx, key, iv);
// Шифруешь данные по указателю in, длина должна быть кратной ключу, т.е. 16 байт
// Функция перезапишет входной буфер зашифрованными данными
AES_CBC_encrypt_buffer(&ctx, in, 64);

ox55ff ★★★ ()

Да вроде очевидно - ctx - структура, в которой хранится состояние, iv - начальный вектор, buf - место куда пишутся данные, len - длина этого буффера

mittorn ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.