CRC методом MD5 в Qt (30.11.2018). Печать
2018 - Ноябрь
30.11.2018 18:02
Save & Share
Много алгоритмов создания контрольной суммы можно найти в интернете. Метод в Qt показался более доступным в плане реализации. Пытался произвольно менять данные в текстовом редакторе (в одном байте отнять 1, в другом прибавить) - срабатывает.
Создание CRC. Объект QFile создан и открыт, данные уже в него записаны.

qFile.close(); //Важно! Необходимо закрыть и открыть снова!!!
qFile.open(QIODevice::ReadWrite);

QCryptographicHash hash(QCryptographicHash::Md5); //MD5 контрольной суммы. MD - с большой буквы везде пишут; Qt - опять выпендрилась.
hash.addData(&qFile);

qFile.write(hash.result()); //16 байт.
qFile.close();

Чтение CRC.

QCryptographicHash hash(QCryptographicHash::Md5);

qFile.seek(qFile.size() - 16);
qbaCRC = qFile.read(16); //Сама контрольная сумма.

qFile.seek(0);
qbaCRC_Data = qFile.read(qFile.size() - 16);

hash.addData(qbaCRC_Data);
qbaCRC_Data = hash.result();

if (qbaCRC_Data != qbaCRC) //Данные и их контрольная сумма.
{
    iMessageBox("Ошибка CRC.","Выкиньте файл " + qFile.fileName() + " в мусорку!", 3);
    qFile.close();
    return;
}

qFile.seek(0); //Можно считывать данные.
Обновлено ( 30.11.2018 18:13 )