Зашифровать / расшифровать файл изображения с помощью ElGamal

Я пытаюсь зашифровать и расшифровать файл изображения с ElGamal в C ++. Он должен использовать шифрование Эль-Гамаля. Я хочу сохранить как зашифрованный файл, так и восстановленный файл. Я использую библиотеки Crypto ++ для шифрования / дешифрования. Вот что у меня так далеко.

AutoSeededRandomPool prng;

ElGamal::Decryptor decryptor;
decryptor.AccessKey().GenerateRandomWithKeySize(prng, 2048);
const ElGamalKeys::PrivateKey& privateKey = decryptor.AccessKey();

ElGamal::Encryptor encryptor(decryptor);
const PublicKey& publicKey = encryptor.AccessKey();

string ofilename = "test.bmp";
string efilename = "test.enc";
string rfilename = "test-recovered.bmp";

FileSource fs1(ofilename.c_str(), true, encryptor.CreateEncryptionFilter(encryptor.Encrypt, new FileSink(efilename.c_str())));

FileSource fs2(efilename.c_str(), true, decryptor.CreateDecryptionFilter(decryptor.Decrypt, new FileSink(rfilename.c_str())));

Я застрял в части шифрования и дешифрования. Любая помощь будет принята с благодарностью!

0

Решение

Ваша проблема в том, что вы пытаетесь зашифровать произвольно большие данные с помощью асимметричной криптосистемы. Асимметричные криптосистемы не могут зашифровать данные, длина которых превышает размер их модуля. (Увидеть Почему моя реализация ElGamal не работает для длинных текстовых строк?)

Типичным решением этой проблемы является выполнение симметричного преобразования ввода с использованием стандартного симметричного алгоритма (например, AES), а затем шифрование симметричного ключа с использованием асимметричного открытого ключа. Затем дешифрование отменяет операцию, сначала дешифруя симметричный ключ, а затем использует симметричный ключ для дешифрования зашифрованного содержимого.

Crypto ++ ElGamal объекты предлагают SymmetricEncrypt и SymmetricDecrypt. Функции будут шифровать и дешифровать текст произвольной длины с помощью симметричного ключа, а затем шифровать симметричный ключ с помощью открытого ключа ElGamal. (Увидеть Crypto ++ Wiki — ElGamal)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]