Closed summerplayer2019 closed 1 year ago
QByteArray QAESEncryption::RemovePadding(const QByteArray &rawText, QAESEncryption::Padding padding) { if (rawText.isEmpty()) return rawText;
QByteArray ret(rawText);
switch (padding)
{
case Padding::ZERO:
//Works only if the last byte of the decoded array is not zero
while (ret.at(ret.length()-1) == 0x00)
ret.remove(ret.length()-1, 1);
break;
case Padding::PKCS7:
ret.remove(ret.length() - ret.back(), ret.back());//what is the fuction--"back()"?
break;
case Padding::ISO:
{
// Find the last byte which is not zero
int marker_index = ret.length() - 1;
for (; marker_index >= 0; --marker_index)
{
if (ret.at(marker_index) != 0x00)
{
break;
}
}
// And check if it's the byte for marking padding
if (ret.at(marker_index) == static_cast<char>(0x80))
{
ret.truncate(marker_index);
}
break;
}
default:
//do nothing
break;
}
return ret;
}
back() function was introduced in Qt 5.10. you can replace with : ret.remove(ret.length() - ret.at(ret.length()-1), ret.at(ret.length()-1));
Thanks!
I should maybe add a check on Qt version to avoid this
E:\Code_Qt\Qt-AES-master\qaesencryption.cpp:37: error: 'class QByteArray' has no member named 'back' ret.remove(ret.length() - ret.back(), ret.back()); ^