QCA encryption возвращает значение NULL, если для алгоритма шифрования установлено значение EME_NO_PADDING. - PullRequest
0 голосов
/ 30 июня 2019

Я написал простой код для шифрования некоторого текста в Qt с использованием QCA (шифрование RSA).Он прекрасно работает до тех пор, пока не изменит алгоритм шифрования на QCA :: EME_NO_PADDING.

bool ec_base::encrypt_message(const QString &in, QString &out, const QString& crt)
{
    //Load the public key
    QCA::ConvertResult conv_res;
    QCA::Certificate cert = QCA::Certificate::fromPEM("ADDRESS", &conv_res);
    if(conv_res != QCA::ConvertGood){
        return false;
    }

    QCA::PublicKey pub_key = cert.subjectPublicKey();
    if (pub_key.isNull() || !pub_key.canEncrypt() || !pub_key.isRSA())
    {
        return false;
    }

    //Encryption
    QCA::SecureArray result = pub_key.encrypt(in.toUtf8(), QCA::EME_NO_PADDING);
    if (result.isEmpty())
    {
        return false;
    }

    out = QString(result.toByteArray().toHex());
    return true;
}

В приведенном выше коде, если алгоритм шифрования установлен в QCA :: EME_PKCS1_OAEP, он будет работать.Но если алгоритм шифрования устанавливает QCA :: EME_NO_PADDING, он вернет ноль.Мне нужен алгоритм вывода без заполнения.

...