Я написал простой код для шифрования некоторого текста в 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, он вернет ноль.Мне нужен алгоритм вывода без заполнения.