介绍

多看看Qt core模块会发现很多惊喜呀,里面包含的类很多涉及到很多方面的功能实现

先附上所有core类:Qt Core,再直接给出QCryptographicHash的帮助:QCryptographicHash

此类用于提供密码散列,哈希值。可以生成二进制或文本形式的hash值,并支持多种算法,算法可以由QCryptographicHash::Algorithm选择

支持的算法

Constant Value Description
QCryptographicHash::Md4 0 Generate an MD4 hash sum
QCryptographicHash::Md5 1 Generate an MD5 hash sum
QCryptographicHash::Sha1 2 Generate an SHA-1 hash sum
QCryptographicHash::Sha224 3 Generate an SHA-224 hash sum (SHA-2). Introduced in Qt 5.0
QCryptographicHash::Sha256 4 Generate an SHA-256 hash sum (SHA-2). Introduced in Qt 5.0
QCryptographicHash::Sha384 5 Generate an SHA-384 hash sum (SHA-2). Introduced in Qt 5.0
QCryptographicHash::Sha512 6 Generate an SHA-512 hash sum (SHA-2). Introduced in Qt 5.0
QCryptographicHash::Sha3_224 RealSha3_224 Generate an SHA3-224 hash sum. Introduced in Qt 5.1
QCryptographicHash::Sha3_256 RealSha3_256 Generate an SHA3-256 hash sum. Introduced in Qt 5.1
QCryptographicHash::Sha3_384 RealSha3_384 Generate an SHA3-384 hash sum. Introduced in Qt 5.1
QCryptographicHash::Sha3_512 RealSha3_512 Generate an SHA3-512 hash sum. Introduced in Qt 5.1
QCryptographicHash::Keccak_224 7 Generate a Keccak-224 hash sum. Introduced in Qt 5.9.2
QCryptographicHash::Keccak_256 8 Generate a Keccak-256 hash sum. Introduced in Qt 5.9.2
QCryptographicHash::Keccak_384 9 Generate a Keccak-384 hash sum. Introduced in Qt 5.9.2
QCryptographicHash::Keccak_512 10 Generate a Keccak-512 hash sum. Introduced in Qt 5.9.2

提供的接口

QCryptographicHash(Algorithm method)
~QCryptographicHash()
void addData(const char *data, int length)
void addData(const QByteArray &data)
bool addData(QIODevice *device)
void reset()
QByteArray result() conststatic QByteArray hash(const QByteArray &data, Algorithm method)

可以实例化此类,构造时需要提供算法类型,然后通过addData需要计算hash的数据,最后通过result获取结果,可以利用reset清空数据但不能修改算法。

还给了一个方便易用的静态方法,直接提供算法类型及数据内容即可。

范例

#include <QCoreApplication>
#include <QDebug>
#include <QCryptographicHash>
int main(int argc, char *argv[]) {QCoreApplication a(argc,argv);QString text("test");qDebug()<<QCryptographicHash::hash(text.toLatin1(), QCryptographicHash::Md5); //16进制结果qDebug()<<QCryptographicHash::hash(text.toLatin1(), QCryptographicHash::Md5).toHex(); //转换为字符串qDebug()<<QCryptographicHash::hash(text.toLatin1(), QCryptographicHash::Keccak_512); //16进制结果qDebug()<<QCryptographicHash::hash(text.toLatin1(), QCryptographicHash::Keccak_512).toHex(); //转换为字符串return 0;
}

结果

"\t\x8Fk\xCD""F!\xD3s\xCA\xDEN\x83&'\xB4\xF6"
"098f6bcd4621d373cade4e832627b4f6"
"\x1E.\x9F\xC2\x00+\x00-u\x19\x8Bu\x03!\f\x05\xA1\xBA\xAC""E`\x91j<m\x93\xBC\xCE:P\xD7\xF0\x0F\xD3\x95\xBF\x16G\xB9\xAB\xB8\xD1\xAF\xCC\x9Cv\xC2\x89\xB0\xC9""8;\xA3\x86\xA9V\xDAK8\x93""D\x17x\x9E"
"1e2e9fc2002b002d75198b7503210c05a1baac4560916a3c6d93bcce3a50d7f00fd395bf1647b9abb8d1afcc9c76c289b0c9383ba386a956da4b38934417789e"

其中test计算md5的结果是098f6bcd4621d373cade4e832627b4f6 可以在相关网站反查结果:http://www.cmd5.com/,可以证明计算正确。

Techie亮博客,转载请注明:Coologic » QCryptographicHash实现哈希值计算,支持多种算法

Coologic 博客域名已更改,已从 www.techieliang.com 改为 www.coologic.cn,上述链接地址受到影响,若需查看源文请手动修改,多有不便,敬请谅解。

QCryptographicHash实现哈希值计算,支持多种算法相关推荐

  1. 《恋上数据结构第1季》哈希表介绍以及从源码分析哈希值计算

    哈希表(Hash Table) 引出哈希表 哈希表(Hash Table) 哈希冲突(Hash Collision) JDK1.8的哈希冲突解决方案 哈希函数 如何生成 key 的哈希值 Intege ...

  2. python 实现文件哈希值计算

    运行效果 # -*- coding: utf-8 -*-import hashlib #导入hashlib模块 import tkinter import tkinter.messagebox imp ...

  3. Kali学习 | 密码攻击:6.5 哈希值识别工具Hash ldentifier

    Kali学习 | 密码攻击:6.5 哈希值识别工具Hash ldentifier 哈希值是使用HASH算法通过逻辑运算得到的数值. 不同的内容使用HASH算法运算后,得到的哈希值不同. 下面将介绍使用 ...

  4. Python小工具:将对象转换为不可变类型并计算其哈希值

    在设计单元测试时,我们往往需要将运行结果与预期结果相比较.但是,如果运行结果是一个比较复杂的数据结构的话,那么我们可能需要将预期结果硬编码到代码中,或存储到文件中,都需要占用一定的空间.为了减少单元测 ...

  5. HTML加js实现计算文件哈希值,HTML5 File API 配合 Web Worker 计算大文件 SHA3 Hash 值

    这学期的安全学课程有个作业,内容是写一个软件实现 SHA3 Hash 值的快速计算.想一想老师这么安排,大致上也有一种推广新的密码学算法的意图.既然希望应用起来,天然跨平台的 Web 显然是一项非常具 ...

  6. 图像相似度计算之哈希值方法OpenCV实现

    感知哈希算法(perceptual hash algorithm),它的作用是对每张图像生成一个"指纹"(fingerprint)字符串,然后比较不同图像的指纹.结果越接近,就说明 ...

  7. 计算特征矩阵及哈希值(含OpenCV代码)

    将简化色彩后的特征图像中每个像素依次与当前图像像素平均值进行比较 程序代码如下: #include <opencv2/opencv.hpp> #include <opencv2/hi ...

  8. 区块链 01(简化后的区块包括父区块哈希值、数据、时间戳、哈希值这四个字段,区块的哈希值由父区块哈希值、数据、时间戳、3个字段拼接通过 哈希算法计算而成)

    """区块包括区块头和区块体两个部分.区块头由版本.父区块哈希值.数据.Merkle根.时间戳.目标难度. #Nonce值组成:区块体实际上可以包含任何内容,在比特币中包 ...

  9. java中string类型的哈希值是怎么计算的

    在 Java 中,字符串类型的哈希值是通过 String 类的 hashCode() 方法计算的.这个方法会通过将字符串的每个字符转换成一个整数,然后将它们进行某种数学运算来得到最终的哈希值. 具体来 ...

最新文章

  1. java 按键框架,如何在java中更改框架?
  2. 13.2.5 模型层——单表操作
  3. vs code vue 语法提示不全_Vue造轮子必备*.vue文件源码读取并高亮展示
  4. Bootstrap 异常
  5. python--之np.any,np.a;;
  6. 数字电路与逻辑设计——组合逻辑应用技巧篇
  7. SVN工具的安装和使用
  8. 正点原子STM32F103(精英版)------电容触摸按键
  9. 使用Python快速实现人脸融合
  10. “海选优品,泉网打尽”胡海泉抖音直播带货首秀告捷 柏厨集成家居塔奇、I-LOFT惊艳亮相
  11. 【青少年编程】【四级】计算三角形面积
  12. 计算机bios设置系统安装教程,z590主板装win7系统及bios设置教程(支持11代cpu驱动)...
  13. 安卓逆向学习笔记(一)
  14. 【JQuery】关于jQuery的load方法在Laravel里的使用
  15. PHP水仙花数程序设计思路,php实现水仙花数示例分享
  16. 使用cesium加载mapbox地图底色的办法
  17. python开篇——初识python
  18. diskgenius如何在Linux运行,diskgenius怎么用
  19. Self-examination 自学考试 大学生自考 Students Self And Self Books 自考图书
  20. 高速数据传输系统市场现状研究分析-

热门文章

  1. Python将excel文件从xls转换为xlsx
  2. Cannot write to file C:\Users\ZCY-Charming\JetBrains\IntelliJIdea2022.1\tomcat\jmxremote.access
  3. Android的log机制,androidtv开发总结
  4. 64位下Python安装PIL图像处理库 (ERROR: Could not find a version that satisfies the requirement PIL (from vers)
  5. 生物膜系统结构和功能
  6. 那些关于前端数据结构与算法
  7. 文件管理:文件存储空间管理
  8. DataInputStream、readUTF方法详解
  9. 区块链+智能投顾的可行性初探
  10. PAT乙级考试经验分享