Как использовать Crypto ++ и вернуть печатный массив байтов / символов для RSA? - PullRequest
1 голос
/ 24 февраля 2020

Я использую следующую функцию для шифрования массива байтов, содержащего непечатные байты с использованием RSA. Однако эта функция возвращает строковое значение и пропускает байты, которые нельзя распечатать.

string RSAencrypt(RSA::PublicKey publicKey,string plain) {
    string cipher;

    try {
        AutoSeededRandomPool rng;
        RSAES_OAEP_SHA_Encryptor e(publicKey);

        StringSource ss1(plain, true,
            new PK_EncryptorFilter(rng, e,
                new StringSink(cipher)
            ) // PK_EncryptorFilter
        ); // StringSource

    }
    catch (CryptoPP::Exception & e)
    {
        cerr << "Caught Exception..." << endl;
        cerr << e.what() << endl;
    }
    return cipher;
}

Как я могу вместо этого вернуть байтовый массив?

1 Ответ

0 голосов
/ 25 февраля 2020

Из документации :

new HexEncoder(
    new StringSink(encoded)
) // HexEncoder

на главной странице , второй ряд снизу, есть и другие датчики. Base64Encoder имеет смысл.

Конечно, вам нужно декодировать снова до расшифровки.

...