当前位置: 首页 > 网络知识

Qt 哈希加密 QCryptographicHash

时间:2026-01-29 09:26:30

  QCryptographicHash类提供了生成密码散列的方法。该类可以用于生成二进制或文本数据的加密散列值。目前支持MD4、MD5、SHA1、SHA224、SHA256、SHA384和SHA512。

共有类型

  枚举QCryptographicHash::Algorithm:

公共函数

void addData(const char * data, int length)

将第一个字符长度的数据添加到密码散列。

bool addData(QIODevice * device)

从开放的QIODevice设备读取数据,直到结束并计算出哈希值。如果成功读取,返回true。

void addData(const QByteArray & data)

这个函数重载了addData()。

void reset()

重置对象。

QByteArray result() const

获取最终的哈希值。

静态公共函数

QByteArray hash(const QByteArray & data, Algorithm method)

获取data数据的哈希值。

示例

通过静态hase()方法计算:

1 QByteArray byteArray; 2 byteArray.append("password"); 3 QByteArray hash = QCryptographicHash::hash(byteArray, QCryptographicHash::Md5); 4 QString strMD5 = hash.toHex();

通过result()方法计算:

1 QByteArray byteArray; 2 byteArray.append("password"); 3 QCryptographicHash hash(QCryptographicHash::Md5); 4 hash.addData(byteArray); // 添加数据到加密哈希值 5 QByteArray result = hash.result(); // 返回最终的哈希值 6 QString strMD5 = result.toHex();

  md5值:5f4dcc3b5aa765d61d8327deb882cf99,可以去找相应的工具进行验证!

  如上所示,无论使用穷举法还是其他手段来破解,都足以说明没有绝对的安全。因为理论上通过逐个查找匹配,是可以破解任何一种密文的,问题只在于如何缩短时间而已。

MD5与SHA1比较
  二者均由MD4导出,所以SHA1和MD5很相似。他们的强度和其它特性也很相似,但还有以下几点不同:

  对强性攻击的安全性:最显著和最重要的区别是SHA1摘要比MD5要长32位。使用强行技术,产生任何一个 报文使其摘要等于给定报文摘要的难度对MD5为2128数量级操作,而对SHA1则是2160数量级操作。这样,SHA1对强攻击有更大的优势。
  对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,相比之下,SHA1则不然。
  速度:相同硬件上,SHA1运行速度比MD5慢。
  碰撞:由于HASH函数产生定长的密文,结果是有限集合。而待处理的明文可以是计算机网络传输的任何信息。也就是说,明文信息是一个无限集合,密文信息却有限,两集合之间无一一对应关系。总有多个不同明文产生相同密文的情况发生,这就是所谓的碰撞。

  MD5与SHA1曾被认为是足够安全的HASH算法,早在1994就有报告称,运算能力最强的机器,平均24天就可能找到一个MD5碰撞。王小云教授的方法已经为短时间内找到MD5与SHA1碰撞成为可能。虽然如此,也并不意味着两种方法就此失效,再者,也可以通过自己的手段来进一步处理。比如:通过MD5与SHA结合实现。将A进行MD5处理得到B,将A在进行SHA处理得到C,再将B与C结合(比如:相加),也可把结合后的结果再进行MD5加密。这足以将碰撞机滤降至很小很小,所以没有绝对的安全,只有更安全。



上一篇:Qt 调试器常见异常
下一篇:Visual Studio 添加 QT 模块
Qt
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素