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();
}
源码