首页 > 其他分享 >【代码片段】Qt6.2.4 获取文件 MD5

【代码片段】Qt6.2.4 获取文件 MD5

时间:2022-09-21 20:59:57浏览次数:98  
标签:Qt6.2 读取 parent 片段 ui file include MainWindow MD5

参考

环境

环境 版本
windows 10
QT 6.2.4
Qt Creator 8.0.1 (Community)
qmake

代码段

第一种

一次性读取文件内容获取文件 md5 (大文件可能内存不够)

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QString>
#include <QFile>
#include <QIODevice>
#include <QCryptographicHash>
#include <QByteArray>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pushButton_clicked()
{
    QString filePath = "C:/20220920163330.png";
    QFile file(filePath);
    if(file.open(QIODevice::ReadOnly)){
        qDebug() << "打开文件成功";
        QByteArray ba = QCryptographicHash::hash(file.readAll(), QCryptographicHash::Md5);
        qDebug() << ba.toHex();
        file.close();
    }else{
        qDebug() << "打开文件失败";
    }
}

第二种

分段读取文件内容获取文件 md5 (比较好的方法)

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QString>
#include <QFile>
#include <QIODevice>
#include <QCryptographicHash>
#include <QByteArray>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QFile file("C:/xxx.png");
    QCryptographicHash hash(QCryptographicHash::Md5);
    //
    if(file.open(QIODevice::ReadOnly)){
        qDebug() << "打开文件成功";
        while(!file.atEnd()){
            QByteArray content = file.read(100* 1024 * 1024);
            hash.addData(content);
        }
        QByteArray md5 = hash.result();
        //
        qDebug() << "MD5:" << md5 << " hex:" << md5.toHex();
        //
        file.close();
    }else{
        qDebug() << "打开文件失败";
    }
}

第三种

第三种是采样获取

  1. 首先判断文件大小是否相同
  2. 文件大小相同则分段读取,判断是否不通,如果读取段相同则继续读取

标签:Qt6.2,读取,parent,片段,ui,file,include,MainWindow,MD5
From: https://www.cnblogs.com/xiaqiuchu/p/16717084.html

相关文章

  • MD5算法工具类
    importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;/***MD5算法工具类*@authorXLINK**/publicclassMD5Tool{/......
  • 文件切割(sqlit),合并(cat),比对(diff,md5sum)
    1.文件切割sqlitLinuxsplit命令用于将一个文件分割成数个。该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。1.1语法split[--help][-......
  • MD5 到底是不是加密算法?
    在回答这个问题之前,我们先分别来了解一下两个知识点:什么是MD5算法?什么是加密算法?一、MD5算法MD5即Message-DigestAlgorithm5(信息-摘要算法5),用于确保信息传输完......
  • Qt学习路线 基于 Qt6.2.4 (更新中)
    环境环境版本windows10QT6.2.4QtCreator8.0.1(Community)qmake路线熟悉语法跟着菜鸟教程C++熟悉基本的C++语法,能看懂C++代码即可。......
  • FASTQ | md5 | 原始文件保存、传输、完整性检验
     像fastq这样的原始文件是肯定不能丢掉的,必须保存在硬盘里或者放到ftp服务器上,以便之后再度调取分析。fastq保存时问题不大,但因为文件巨大,传输通常需要几小时-几天,非常......
  • BUUCTF [BJDCTF2020]Easy MD5 详解
    1.题目搞了好久,这道题,就一个简简单单的输入框。2、利用md5($password,true)实现SQL注入打开题目,看上去像sql注入,也有可能是命令执行,或者SSRF,但是注入半天也没什么反应......
  • 【转载】Qt6.2.4 qml ChartView 实现饼状图与问题解决
    转载https://www.bilibili.com/video/BV1dS4y1u7vN?p=30&vd_source=64f1a4c05d797eb3cca1ef771fd46c22环境环境版本windows10QT6.2.4QtCreator8.0......
  • Python批量校验两个文件夹里面的文件MD5
    importbase64importhashlibimportosg_origin_path="【目录】"g_target_path="【目录】"defget_file_md5(filepath):f=open(filepath,'rb')md5......
  • 不用工具,如何快速计算文件的MD5?
    不用工具,如何快速计算文件的MD5?网络安全现在是信息化系统中的必备要素。大家在各种软件下载站上下载的文件,到底有没有被植入木马,是否安全,你心里有底吗?植入木马的一种常用......
  • Java实现MD5加密
    Java实现MD5加密1、maven引入jar包<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.14......