QT MD5校验文件和数据的完整性

devtools/2025/2/27 22:50:07/

MD5介绍:
‌MD5,全称为‌‌Message-Digest Algorithm 5(消息摘要算法5)‌,是一种广泛使用的密码散列函数。它可以将任意长度的“字节串”变换成一个128位(16字节)的散列值(hash value),通常表示为32个十六进制数。

MD5用途:
确保信息传输的完整一致。通过对比信息的MD5值,可以验证信息在传输过程中是否被篡改。
在很多操作系统中,用户的密码通常是以MD5值的方式保存的,用于验证用户密码的正确性。

QT中使用到的类:
QCryptographicHash,是 Qt 框架中提供的一个类,它用于实现加密散列函数,也就是我们常说的哈希函数。哈希函数能够将任意长度的数据转换为固定长度的哈希值,这个哈希值通常用于数据的完整性校验、密码存储等场景。
支持:MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512,这些算法被广泛认为是安全的。使用这些哈希算法可以增强应用程序的数据安全性。

使用方法:
使用MD5枚举方式创建类对象
QCryptographicHash hash(QCryptographicHash::Md5);

加载数据
hash.addData(data);

转换成MD5值
hash.result().toHex()

相关代码:
字符串加密

void Widget::on_makeBtn2_clicked()
{QCryptographicHash hash(QCryptographicHash::Md5);QString data = ui->lineEdit2->text();hash.addData(data.toUtf8());ui->md5Show2->setText(hash.result().toHex());
}

文件加密

QString Widget::MakeMd5(const QString &sourceFilePath)
{QFile sourceFile(sourceFilePath);qint64 fileSize = sourceFile.size();const qint64 bufferSize = 1024*10;if (sourceFile.open(QIODevice::ReadOnly)) {char buffer[bufferSize];int bytesRead;int readSize = qMin(fileSize, bufferSize);QCryptographicHash hash(QCryptographicHash::Md5);while (readSize > 0 && (bytesRead = sourceFile.read(buffer, readSize)) > 0) {fileSize -= bytesRead;hash.addData(buffer, bytesRead);readSize = qMin(fileSize, bufferSize);}sourceFile.close();return QString(hash.result().toHex());}return QString();
}

源码


http://www.ppmy.cn/devtools/163190.html

相关文章

Maven最新版安装教程

一、Maven下载 1.前往官网下载 点击前往官网 2.进去之后点击Download 如果是Windows用户使用Maven则选择apache-maven-x.x.x-bin.zip即可。Liunx和MacOS用户则选择apache-maven-x.x.x-bin.tar.zip。 由于服务器在国外下载可能会很慢或者失败,大家可以去网盘获取 …

1分钟用DeepSeek编写一个PDF转Word软件

一、引言 如今,在线工具的普及让PDF转Word成为了一个常见需求,常见的pdf转word工具有收费的wps,免费的有pdfgear,见下文: PDFgear:一款免费的PDF编辑、格式转化软件-CSDN博客 还有网上在线的免费pdf转word工具smallp…

【Linux网络编程】高效I/O--select/poll服务器

目录 多路转接之select select服务器实现 获取连接 handlerEvent select服务器代码链接 select的优缺点 多路转接之poll poll服务器实现(select服务器改写) poll的优缺点 多路转接之select select的作用 I/O的本质 等 拷贝 多路转接就是通过同时等待多个文件描述…

内容中台的企业CMS架构是什么?

企业CMS模块化架构 现代企业内容管理系统的核心在于模块化架构设计,通过解耦内容生产、存储、发布等环节构建灵活的技术栈。动态/静态发布引擎整合技术使系统既能处理实时更新的产品文档,也能生成高并发的营销落地页,配合版本控制机制确保内…

HDFS联邦机制与HA

1.Federation背景介绍 从上图中,我们可以很明显地看出现有的HDFS数据管理,数据存储2层分层的结构。也就是说,所有关于存储数据的信息和管理是放在NameNode这边,而真实数据的存储则是在各个DataNode下。而这些隶属于同一个NameNode,所管理的数据都是在同…

ElasticSearch12-8.x安装

零、文章目录 ElasticSearch12-8.x安装 Windows版本安装文件百度网盘地址:https://pan.baidu.com/s/1AEBK1VFnVhogBbs-MSwWJw?pwd8888Linux版本安装文件百度网盘地址: https://pan.baidu.com/s/1qlzBaim5f1qPFOy7qHnaWw?pwd8888Linux相关知识参考&am…

鸿蒙5.0实战案例:基于AVCodecKit的音视频解码及二次处理播放

往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录) ✏️ 鸿蒙(HarmonyOS)北向开发知识点记录~ ✏️ 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…

CF 90A.Cableway(Java实现)

题目分析 输入三个数字分别代表r,g,b三组学生数量,缆车按照r-g-b-r的方式循环,每一分钟来一辆车,且初始0时r车准备出发。全程上山时间为30分钟。 思路分析 每走一辆车则到达山顶的时间就多一分钟,那只需要…