本文介绍Qt计算散列值(MD5,SHA-1,SHA-256)。
采用Qt开发应用程序有时会涉及到密码的存储,在配置文件或数据库中以明文存储这些数据是不允许的,通常存储这些密码的散列值,将用户输入的密码值经过同样的散列算法,和存储的散列值进行比对就可知道密码是否正确。基于散列算法的机制,知道散列值推测密码是困难的或不可能的。本文使用Qt自带的QCryptographicHash类简单介绍如何生成常见的散列值。
1.静态方法
QString PasswordWindow::encrypt(const QString &str)
{
QByteArray arr;
QString md5;
arr.append(str);
QByteArray hash = QCryptographicHash::hash(arr, QCryptographicHash::Md5);
md5 = hash.toHex();
return md5;
}
2.基于追加数据的方法
QString PasswordWindow::encrypt(const QString &str)
{
QByteArray arr;
QString md5;
arr.append(str);
QCryptographicHash hash(QCryptographicHash::Md5);
hash.addData(arr);
QByteArray result = hash.result();
md5 = result.toHex();
return md5;
}
注意:
可将“Md5”修改为“Sha1”,“Sha256”,或其他值(具体可以查看帮助文档),从而改变散列算法。
总结,本文介绍了Qt计算散列值(MD5,SHA-1,SHA-256)。