" title="Написать письмо">Написать письмо

Статистика

Пользователи : 1
Статьи : 1955
Просмотры материалов : 7092790
 
CRC методом MD5 в Qt (30.11.2018). Печать E-mail
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 )
 
 

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


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

Много статей не имеет срока устаревания. Есть смысл смотреть и 2011, и даже 2008 год. Политика сайта: написать статью, а потом обновлять ее много лет.
Открыта карта ВТБ для донатов на дорогостоящие эксперименты: 5368 2902 0040 0838.

Рекламодателям! Перестаньте спамить мне на почту с предложениями о размещении рекламы на этом сайте. Я никогда спамером/рекламщиком не был и не буду!
Top.Mail.Ru