当加密算法设置为EME_NO_PADDING

时间:2019-06-30 07:36:47

标签: c++ qt encryption padding

我编写了一个简单的代码,使用QCA(RSA加密)对Qt中的某些文本进行加密。在将加密算法更改为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,它将返回null。我需要没有填充的输出算法。

0 个答案:

没有答案