2016-01-25 4 views
1

Для моего приложения на C++ я просмотрел Crypto ++. Кажется достаточно простым, чтобы зашифровать некоторый контент и сохранить его в файле. Это также кажется достаточно простым, чтобы расшифровать весь файл. Однако наше требование состоит в том, что мы не можем сразу дешифровать весь файл. Мне нужно дешифровать часть файла «на лету» по запросу вызывающего. По сути, мне нужно реализовать следующие псевдо-методы:Дешифрование частей файла AES зашифрованного файла

int openFile(const char* aesFile); // returns a handle 
    long read(int handle, long pos, int size, byte* buffer); 

Как я могу это достичь? Есть что-то в Crypto ++ или какой-либо другой библиотеке, которая легко доступна для этого? С уважением.

+2

Каким режимом работы является файл, зашифрованный? Только некоторые режимы поддерживают произвольный доступ, а другие - расшифровать с самого начала. – interjay

ответ

2

Как я могу это достичь? Есть что-то в Crypto ++ ...

Думаю, вам нужны две вещи. Во-первых, вам нужен для поиска режим шифрования. Counter mode (CTR), вероятно, сработает для этого. Вы можете проверить, доступен ли шифр, используя IsRandomAccess(). Его унаследовал от StreamTransfoormation Class.

В режиме счетчика (и других режимах поиска) будьте осторожны, чтобы убедиться, что у вас все еще есть гарантии подлинности. Это может быть сложно. Также см. Authenticated Encryption на странице Crypto++ wiki.

Во-вторых, вероятно, вам нужно избегать Интерфейс потокового воспроизведения и вы должны использовать Put и Get. Put и Get только C-подобные функции класса присутствуют на каждом Crypto ++ BufferedTransformation класса.

Большинство примеров Put и Get довольно тривиально. Тем не менее, более существенный недавно появился на Crypto++ wiki по адресу Init-Update-Final. Хотя его более существенный, его не сложнее, потому что его простая концепция.


... или некоторые другие библиотеки, которые легко доступны, чтобы сделать это?

Ну, это выбор, который вы должны сделать. Если C++ и библиотеки безопасности являются вашими единственными требованиями к библиотеке, вы также можете проверить Jack Lloyd's Botan.

Смежные вопросы