• Qt 使用MD5给数据加密方法


    重点:

    1.通常在存储密码的时候需要对数据进行加密,通常采用Md5进行加密。

    1. //存储密码时候
    2. //读取存储的用户名和密码, 密码是经过加密的
    3. void TDialogLogin::readSettings()
    4. {
    5. QSettings settings; //创建QSettings对象
    6. bool saved=settings.value("saved",false).toBool(); //读取 saved键的值
    7. m_user=settings.value("Username", "user").toString(); //读取 Username 键的值,默 认为“user”
    8. QString defaultPSWD=encrypt("12345"); //默认密码"12345"加密后的数据
    9. m_pswd=settings.value("PSWD",defaultPSWD).toString(); //读取PSWD 键的值
    10. if (saved)
    11. ui->editUser->setText(m_user);
    12. ui->chkBoxSave->setChecked(saved);
    13. }
    14. //保存用户名,密码等设置
    15. void TDialogLogin::writeSettings()
    16. {
    17. QSettings settings; //注册表键组
    18. settings.setValue("Username",m_user); //用户名
    19. settings.setValue("PSWD",m_pswd); //密码,经过加密的
    20. settings.setValue("saved",ui->chkBoxSave->isChecked());
    21. }
    22. QString TDialogLogin::encrypt(const QString &str)
    23. { //字符串MD5算法加密
    24. QByteArray btArray= str.toLocal8Bit(); //字符串转换为字节数组数据
    25. QCryptographicHash hash(QCryptographicHash::Md5); //Md5加密算法
    26. hash.addData(btArray); //添加数据到加密哈希值
    27. QByteArray resultArray =hash.result(); //返回最终的哈希值
    28. QString md5 =resultArray.toHex(); //转换为16进制字符串
    29. return md5;
    30. }
    31. //判断用户输入账号和密码
    32. //"确定"按钮响应
    33. void TDialogLogin::on_btnOK_clicked()
    34. {
    35. QString user=ui->editUser->text().trimmed(); //输入的用户名
    36. QString pswd=ui->editPSWD->text().trimmed(); //输入的密码
    37. QString encrptPSWD=encrypt(pswd); //对输入的密码进行加密
    38. if ((user==m_user)&&(encrptPSWD==m_pswd)) //如果用户名和密码正确
    39. {
    40. writeSettings(); //保存设置
    41. this->accept(); //accept(),关闭对话框
    42. }
    43. else
    44. {
    45. m_tryCount++; //错误次数
    46. if (m_tryCount>3)
    47. {
    48. QMessageBox::critical(this, "错误", "输入错误次数太多,强行退出");
    49. this->reject(); //reject(), 关闭对话框
    50. }
    51. else
    52. QMessageBox::warning(this, "错误提示", "用户名或密码错误");
    53. }
    54. }

  • 相关阅读:
    Java进阶——IO 流
    win 10 命令行编译运行GCC(已经安装DEV C++)
    Trie树 复习笔记
    WPF动画详解
    基于单片机设计的智能风扇(红外线无线控制开关调速定时)
    【Golang】判断某一类型是否实现指定接口的几种方法
    MobileViT模型简介
    Pytorch -> ONNX -> TensorRT 模型转换与部署
    Android T(13)-- Looper 的实现(二)
    java-php-python-ssm基于水果商城设计计算机毕业设计
  • 原文地址:https://blog.csdn.net/qq_38409301/article/details/136282297