Qt 使用MD5给数据加密方法

重点:

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, "错误提示", "用户名或密码错误");
    }
}
相关推荐
future_studio3 分钟前
聊聊 Unity(小白专享、C# 小程序 之 加密存储)
开发语言·小程序·c#
m0_7369270420 分钟前
Spring Boot自动配置与“约定大于配置“机制详解
java·开发语言·后端·spring
feiyangqingyun1 小时前
Qt项目作品在苹果macos上编译运行效果/视频监控系统/物联网平台等
开发语言·qt·macos
你不是我我1 小时前
【Java 开发日记】我们来说一说 Redisson 的原理
java·开发语言
kk”1 小时前
C++ stack 和 queue
开发语言·c++
Matlab仿真实验室2 小时前
基于Matlab实现双目图计算深度图
开发语言·数码相机·matlab·双目图计算深度图
QT 小鲜肉2 小时前
【数据结构与算法基础】05. 栈详解(C++ 实战)
开发语言·数据结构·c++·笔记·学习·算法·学习方法
老K的Java兵器库2 小时前
Collections 工具类 15 个常用方法源码:sort、binarySearch、reverse、shuffle、unmodifiableXxx
java·开发语言·哈希算法
武子康2 小时前
Java-153 深入浅出 MongoDB 全面的适用场景分析与选型指南 场景应用指南
java·开发语言·数据库·mongodb·性能优化·系统架构·nosql
rit84324992 小时前
ES6 箭头函数:告别 `this` 的困扰
开发语言·javascript·es6