QCryptographicHash實現哈希值計算,支持多種算法

版權聲明:若無來源註明, Techie亮博客文章均爲原創。 轉載請以連接形式標明本文標題和地址:
本文標題:QCryptographicHash實現哈希值計算,支持多種算法     本文地址: http://techieliang.com/2017/12/668/

1. 介紹

多看看Qt core模塊會發現不少驚喜呀,裏面包含的類不少涉及到不少方面的功能實現html

先附上全部core類:Qt Core,再直接給出QCryptographicHash的幫助:QCryptographicHash算法

此類用於提供密碼散列,哈希值。能夠生成二進制或文本形式的hash值,並支持多種算法,算法能夠由QCryptographicHash::Algorithm選擇app

1.1. 支持的算法

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

1.2. 提供的接口

  1. QCryptographicHash(Algorithm method)
  2. ~QCryptographicHash()
  3. void addData(const char *data, int length)
  4. void addData(const QByteArray &data)
  5. bool addData(QIODevice *device)
  6. void reset()
  7. QByteArray result() const
  8.  
  9. static QByteArray hash(const QByteArray &data, Algorithm method)

能夠實例化此類,構造時須要提供算法類型,而後經過addData須要計算hash的數據,最後經過result獲取結果,能夠利用reset清空數據但不能修改算法。post

還給了一個方便易用的靜態方法,直接提供算法類型及數據內容便可。網站

2. 範例

  1. #include <QCoreApplication>
  2. #include <QDebug>
  3. #include <QCryptographicHash>
  4. int main(int argc, char *argv[]) {
  5. QCoreApplication a(argc,argv);
  6. QString text("test");
  7. qDebug()<<QCryptographicHash::hash(text.toLatin1(),QCryptographicHash::Md5);//16進制結果
  8. qDebug()<<QCryptographicHash::hash(text.toLatin1(),QCryptographicHash::Md5).toHex();//轉換爲字符串
  9. qDebug()<<QCryptographicHash::hash(text.toLatin1(),QCryptographicHash::Keccak_512);//16進制結果
  10. qDebug()<<QCryptographicHash::hash(text.toLatin1(),QCryptographicHash::Keccak_512).toHex();//轉換爲字符串
  11. return 0;
  12. }

結果spa

  1. "\t\x8Fk\xCD""F!\xD3s\xCA\xDEN\x83&'\xB4\xF6"
  2. "098f6bcd4621d373cade4e832627b4f6"
  3. "\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"
  4. "1e2e9fc2002b002d75198b7503210c05a1baac4560916a3c6d93bcce3a50d7f00fd395bf1647b9abb8d1afcc9c76c289b0c9383ba386a956da4b38934417789e"

其中test計算md5的結果是098f6bcd4621d373cade4e832627b4f6 能夠在相關網站反查結果:http://www.cmd5.com/,能夠證實計算正確。code

轉載請以連接形式標明本文標題和地址: Techie亮博客 » QCryptographicHash實現哈希值計算,支持多種算法
相關文章
相關標籤/搜索