【代码片段】Qt6.2.4 获取文件 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() << "打开文件失败";
    }
}
第三种
第三种是采样获取
- 首先判断文件大小是否相同
- 文件大小相同则分段读取,判断是否不通,如果读取段相同则继续读取
    博  主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/16717084.html
 
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
    
地 址 :https://www.cnblogs.com/xiaqiuchu/p/16717084.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号