重点:
1.通常在存储密码的时候需要对数据进行加密,通常采用Md5进行加密。
cpp
//存储密码时候
//读取存储的用户名和密码, 密码是经过加密的
void TDialogLogin::readSettings()
{
QSettings settings; //创建QSettings对象
bool saved=settings.value("saved",false).toBool(); //读取 saved键的值
m_user=settings.value("Username", "user").toString(); //读取 Username 键的值,默 认为"user"
QString defaultPSWD=encrypt("12345"); //默认密码"12345"加密后的数据
m_pswd=settings.value("PSWD",defaultPSWD).toString(); //读取PSWD 键的值
if (saved)
ui->editUser->setText(m_user);
ui->chkBoxSave->setChecked(saved);
}
//保存用户名,密码等设置
void TDialogLogin::writeSettings()
{
QSettings settings; //注册表键组
settings.setValue("Username",m_user); //用户名
settings.setValue("PSWD",m_pswd); //密码,经过加密的
settings.setValue("saved",ui->chkBoxSave->isChecked());
}
QString TDialogLogin::encrypt(const QString &str)
{ //字符串MD5算法加密
QByteArray btArray= str.toLocal8Bit(); //字符串转换为字节数组数据
QCryptographicHash hash(QCryptographicHash::Md5); //Md5加密算法
hash.addData(btArray); //添加数据到加密哈希值
QByteArray resultArray =hash.result(); //返回最终的哈希值
QString md5 =resultArray.toHex(); //转换为16进制字符串
return md5;
}
//判断用户输入账号和密码
//"确定"按钮响应
void TDialogLogin::on_btnOK_clicked()
{
QString user=ui->editUser->text().trimmed(); //输入的用户名
QString pswd=ui->editPSWD->text().trimmed(); //输入的密码
QString encrptPSWD=encrypt(pswd); //对输入的密码进行加密
if ((user==m_user)&&(encrptPSWD==m_pswd)) //如果用户名和密码正确
{
writeSettings(); //保存设置
this->accept(); //accept(),关闭对话框
}
else
{
m_tryCount++; //错误次数
if (m_tryCount>3)
{
QMessageBox::critical(this, "错误", "输入错误次数太多,强行退出");
this->reject(); //reject(), 关闭对话框
}
else
QMessageBox::warning(this, "错误提示", "用户名或密码错误");
}
}