bricke / Qt-AES

Native Qt AES encryption class
The Unlicense
501 stars 187 forks source link

class QByteArray' has no member named 'back', #26

Closed summerplayer2019 closed 1 year ago

summerplayer2019 commented 5 years ago

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()); ^

summerplayer2019 commented 5 years 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;

}

dispensable1988 commented 5 years ago

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));

summerplayer2019 commented 5 years ago

Thanks!

bricke commented 5 years ago

I should maybe add a check on Qt version to avoid this