最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt實現(xiàn)數(shù)據(jù)進行加密、解密的步驟

 更新時間:2024年03月11日 15:34:36   作者:怎么追摩羯座  
本文主要介紹了Qt實現(xiàn)數(shù)據(jù)進行加密、解密的步驟,包含QCryptographicHash和Qt-AES兩種庫的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下

一、說明

在Qt項目中簡單的對數(shù)據(jù)進行加密解密,有如下兩種方式

1、QCryptographicHash

Qt提供了用于加密的類QCryptographicHash,但是QCryptographicHash類只有加密功能,沒有解密功能

2、Qt-AES

使用第三方AES庫,對數(shù)據(jù)進行加密解密

二、使用QCryptographicHash

新建一個Qt項目,基類選擇QMainWindow,

在界面上拖拽如下兩個控件,并進行布局

更改.h代碼

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    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); //添加數(shù)據(jù)
    QByteArray retArray = hash.result(); //加密后的數(shù)據(jù)
    qDebug() << retArray.toHex(); //轉(zhuǎn)化成16進制
}

運行,隨意輸入一下數(shù)據(jù),如:123abc,點擊pushButton

三、使用Qt-AES

訪問下面的鏈接,下載Qt-AES相關(guān)文件

https://github.com/bricke/Qt-AES

創(chuàng)建一個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_OBJECT

public:
    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"; //要加密的數(shù)據(jù)
    QString key = "9876543"; //密鑰
    QString encoded = encodedText(data, key); //加密
    QString decoded = decodedText(encoded, key); //解密·
    qDebug() << "源數(shù)據(jù):" << data;
    qDebug() << "加密:" << encoded;
    qDebug() << "解密:" << decoded;
}

MainWindow::~MainWindow()
{
    delete ui;
}

//使用AES對數(shù)據(jù)進行加    密
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);

    //對源數(shù)據(jù)加密
    QByteArray encodedText = encryption.encode(data.toUtf8(), hashKey);

    //QByteArray轉(zhuǎn)QString (toBase64()不能去掉)
    QString encodeTextStr = QString::fromLatin1(encodedText.toBase64());
    //qDebug()<< "encodedText:"<< encodeTextStr;

    return encodeTextStr;
}

//使用AES對數(shù)據(jù)進行解密
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轉(zhuǎn)QString
    QString decodedTextStr = QString::fromLatin1(decodedText);
    //qDebug()<<"decodedText:"<< decodedTextStr;

    return decodedTextStr;
}

運行測試

不加fromBase64、toBase64時

到此這篇關(guān)于Qt實現(xiàn)數(shù)據(jù)進行加密、解密的步驟的文章就介紹到這了,更多相關(guān)Qt 加密解密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • c++ bitset詳解

    c++ bitset詳解

    這篇文章主要介紹了C++ bitset用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • C語言編程數(shù)據(jù)結(jié)構(gòu)線性表之順序表和鏈表原理分析

    C語言編程數(shù)據(jù)結(jié)構(gòu)線性表之順序表和鏈表原理分析

    本篇文章是C語言編程篇主要為大家介紹了C語言編程中的數(shù)據(jù)結(jié)構(gòu)線性表,文中附含豐富的圖文示例代碼為大家詳解了線性表中的順序表和鏈表,有需要的朋友可以借鑒參考下
    2021-09-09
  • Visual?C++?6.0新建一個C語言文件的圖文教程

    Visual?C++?6.0新建一個C語言文件的圖文教程

    本教程適用于C語言初學(xué)者,本文主要介紹了Visual?C++?6.0新建一個C語言文件的圖文教程,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • C語言中的sscanf()函數(shù)使用詳解

    C語言中的sscanf()函數(shù)使用詳解

    這篇文章主要介紹了C語言中的sscanf()函數(shù)使用詳解,文中附加了一道相關(guān)的ACM題目進行補充鞏固,需要的朋友可以參考下
    2015-08-08
  • C++遞歸線性陣列搜索數(shù)字的方法

    C++遞歸線性陣列搜索數(shù)字的方法

    這篇文章主要介紹了C++遞歸線性陣列搜索數(shù)字的方法,涉及C++遞歸及數(shù)組操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C++中的map使用方法詳解

    C++中的map使用方法詳解

    C++中的map是一種關(guān)聯(lián)容器,用于存儲鍵值對。它提供了一種非常高效的方法來快速查找特定的值,并且允許我們根據(jù)鍵來排序和遍歷數(shù)據(jù)。在本文中,我們將深入了解C++中的map以及如何使用它來提高程序的效率,感興趣的朋友可以參考下
    2023-05-05
  • C++玫瑰花字符畫項目實戰(zhàn)教程

    C++玫瑰花字符畫項目實戰(zhàn)教程

    本文介紹了C++字符藝術(shù)——以“玫瑰花代碼”為例,從字符選擇、循環(huán)與條件控制、對稱性實現(xiàn)、函數(shù)組織和用戶交互等方面,講解如何用C++編寫和優(yōu)化字符圖案,并支持個性化定制和動態(tài)圖案生成
    2025-10-10
  • 用c++寫控制臺貪吃蛇游戲完整步驟

    用c++寫控制臺貪吃蛇游戲完整步驟

    用C++制作貪吃蛇游戲是一個經(jīng)典的編程練習(xí),它涉及多個方面的編程知識,包括數(shù)據(jù)結(jié)構(gòu)、圖形界面、事件處理等,這篇文章主要介紹了用c++寫控制臺貪吃蛇游戲的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-12-12
  • Java C++ 題解leetcode857雇傭K名工人最低成本vector pair

    Java C++ 題解leetcode857雇傭K名工人最低成本vector pair

    這篇文章主要為大家介紹了Java C++ 題解leetcode857雇傭K名工人最低成本vector pair示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • C++中約數(shù)定理的實例詳解

    C++中約數(shù)定理的實例詳解

    這篇文章主要介紹了C++中約數(shù)定理的實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07

最新評論

南召县| 南昌市| 盖州市| 库尔勒市| 抚远县| 怀宁县| 溧阳市| 滦平县| 海晏县| 衡东县| 山东省| 湘乡市| 永新县| 新沂市| 静宁县| 安丘市| 南澳县| 颍上县| 海晏县| 西吉县| 新安县| 武城县| 互助| 贵溪市| 格尔木市| 侯马市| 枣庄市| 上犹县| 万载县| 石城县| 滁州市| 长宁区| 兰州市| 连平县| 云林县| 定边县| 北碚区| 嘉义县| 中江县| 剑川县| 吴旗县|