跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 工具系统 > 监控软件 > 10、Qt:对数据进行加密、解密

10、Qt:对数据进行加密、解密

时间:2024-04-29 20:50:24 来源:网络cs 作者:焦糖 栏目:监控软件 阅读:

标签: 数据 

一、说明

在Qt项目中简单的对数据进行加密解密,有如下两种方式 1、QCryptographicHash Qt提供了用于加密的类QCryptographicHash,但是QCryptographicHash类只有加密功能,没有解密功能 2、Qt-AES 使用第三方AES库,对数据进行加密解密

二、使用QCryptographicHash

新建一个Qt项目,基类选择QMainWindow,

在界面上拖拽如下两个控件,并进行布局

更改.h代码
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = nullptr);    ~MainWindow();private slots:    void on_pushButton_clicked();private:    Ui::MainWindow *ui;};#endif // MAINWINDOW_H
更改.cpp代码
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QCryptographicHash>#include <QDebug>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);}MainWindow::~MainWindow(){    delete ui;}void MainWindow::on_pushButton_clicked(){    QByteArray array;    array.append(ui->lineEdit->text());    QCryptographicHash hash(QCryptographicHash::Md5); //Md5加密    hash.addData(array); //添加数据    QByteArray retArray = hash.result(); //加密后的数据    qDebug() << retArray.toHex(); //转化成16进制}
运行,随意输入一下数据,如:123abc,点击pushButton

三、使用Qt-AES

访问下面的链接,下载Qt-AES相关文件 https://github.com/bricke/Qt-AES

创建一个Qt项目,基类选择“QMainWindow”,把qaesencryption.h和qaesencryption.cpp两个文件添加到项目中

更改.h代码
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QCryptographicHash>#include <QDebug>#include "qaesencryption.h"namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = nullptr);    ~MainWindow();private slots:    QString encodedText(QString data, QString key); //加密    QString decodedText(QString data, QString key); //解密private:    Ui::MainWindow *ui;};#endif // MAINWINDOW_H
更改.cpp代码  
#include "MainWindow.h"#include "ui_MainWindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);    QString data = "qwer123456"; //要加密的数据    QString key = "9876543"; //密钥    QString encoded = encodedText(data, key); //加密    QString decoded = decodedText(encoded, key); //解密·    qDebug() << "源数据:" << data;    qDebug() << "加密:" << encoded;    qDebug() << "解密:" << decoded;}MainWindow::~MainWindow(){    delete ui;}//使用AES对数据进行加    密QString MainWindow::encodedText(QString data, QString key){    //密钥长度AES_128,加密方式ECB,填充方式ZERO    QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::ECB,                 QAESEncryption::ZERO);    //使用QCryptographicHash对密钥进行加密    QByteArray hashKey = QCryptographicHash::hash(key.toUtf8(), QCryptographicHash::Sha1);    //对源数据加密    QByteArray encodedText = encryption.encode(data.toUtf8(), hashKey);    //QByteArray转QString (toBase64()不能去掉)    QString encodeTextStr = QString::fromLatin1(encodedText.toBase64());    //qDebug()<< "encodedText:"<< encodeTextStr;    return encodeTextStr;}//使用AES对数据进行解密QString MainWindow::decodedText(QString data, QString key){    //密钥长度AES_128,加密方式ECB,填充方式ZERO    QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::ECB,     QAESEncryption::ZERO);    //使用QCryptographicHash对密钥进行加密    QByteArray hashKey = QCryptographicHash::hash(key.toUtf8(), QCryptographicHash::Sha1);    //解密    QByteArray decodedText = encryption.decode(QByteArray::fromBase64(data.toLatin1()), hashKey);    //QByteArray转QString    QString decodedTextStr = QString::fromLatin1(decodedText);    //qDebug()<<"decodedText:"<< decodedTextStr;    return decodedTextStr;}
运行测试

不加fromBase64、toBase64时

本文链接:https://www.kjpai.cn/news/2024-04-29/163600.html,文章来源:网络cs,作者:焦糖,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论