" title="Написать письмо">Написать письмо
Много статей не имеет срока устаревания. Есть смысл смотреть и 2011, и даже 2008 год.
Политика сайта: написать статью, а потом обновлять ее много лет.
Открыта карта ВТБ для материальной поддержки сайта: 4893470220568296.

Рекламодателям! Перестаньте спамить мне на почту с предложениями о размещении рекламы на этом сайте. Я никогда спамером/рекламщиком не был и не буду!
Ваш IP: 34.228.41.66
Вы подарите мне деньги на развитие этого сайта? Номер карты указан зеленым цветом.
 

Статистика

Пользователи : 1
Статьи : 1092
Просмотры материалов : 3818555
 
CRC методом MD5 в Qt (30.11.2018). Печать E-mail
2018 - Ноябрь
30.11.2018 19: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 19:13 )
 
 

Последние новости

©2008-2018. All Rights Reserved. Разработчик - " title="Сергей Белов">Сергей Белов. Материалы сайта предоставляются по принципу "как есть". Автор не несет никакой ответственности и не гарантирует отсутствие неправильных сведений и ошибок. Вся ответственность за использование материалов лежит полностью на читателях. Размещение материалов данного сайта на иных сайтах запрещено без указания активной ссылки на данный сайт-первоисточник (ГК РФ: ст.1259 п.1 + ст.1274 п.1-3).