MD5與Base64


MD5是一種信息摘要算法。相當於文件指紋。有以下屬性:

任意大小的數據,算出的MD5值的長度都是固定的,32位16進制數字;

對原數據的修改,哪怕一個字節,得到的md5值也是大相徑庭;

不可恢復,過程不可逆。

廣泛應用於登錄驗證、數字證書、文件校驗。

比如在登錄驗證時,系統會把我們輸入的密碼提取出來進行MD5加密,與存在數據庫中的密碼(也是MD5加密過的)進行比對,因為相同字符得到md5值是一樣的。

在Qt中如何使用MD5?

這里要用到QCryptographicHash類

1     QByteArray arry = "hello world"; //准備要加密的數據
2     QCryptographicHash hash(QCryptographicHash::Md5);
3     hash.addData(arry);
4     QByteArray str = hash.result();//加密
5     str = str.toHex();//16進制

 如果要加密的文件需要從磁盤文件讀取

 1 QString MainWindow::getMd5(QString path)
 2 {
 3     QCryptographicHash hash(QCryptographicHash::Md5);
 4     // 1 . 添加數據
 5     QFile file(path);
 6     file.open(QFile::ReadOnly);
 7     hash.addData(&file);
 8     // 2. 數據運算-> 結果
 9     QByteArray res = hash.result().toHex();
10     // 3. return result
11     return res;
12 }

 

方法二:利用靜態函數

 

1  array = QCryptographicHash::hash ( “hello world”,QCryptographicHash::Md5 );
2 
3  return array.toHex();

 

 

 

 base64

  是一種用64個字符來表示任意二進制數據的方法。由A-Z,a-z,0-9.+/組成

  在網絡上發送數據時,由於要經歷多個不同路由設備,不同的設備對字符的處理方式可能不同,這樣一些不可見的字符有可能被處理錯誤。解決辦法是先把數據做一個base64編碼,全部變為可見字符,降低出錯的可能。它是可逆的。

  算法表述:每次取3個字節,一共3*8=24位,重新划分為4*6,4組6位。

      每組前面補兩個0,組成八位一個字節的形式,8*4=32位。

      剩下的字節如果不足3個,用0替代。0輸出字符是“=”。解碼會去掉。

Qt中如何使用base64

  

1 //編碼
2  QByteArray base = "hello world";
3  base = base.toBase64();
4   //解碼
5  base = QByteArry::fromBase64(base);
6  qDebug() <<base.data();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM