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();