我编写了一个简单的代码,使用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。我需要没有填充的输出算法。