重点:
1.通常在存储密码的时候需要对数据进行加密,通常采用Md5进行加密。
- //存储密码时候
- //读取存储的用户名和密码, 密码是经过加密的
- 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, "错误提示", "用户名或密码错误");
- }
- }