当前位置:网站首页>qt base64加解密
qt base64加解密
2022-06-27 19:33:00 【东方忘忧】
这里提供两种加解密的方法。
第一种方法:使用QByteArray的toBase64和fromBase64来实现。
第二种方法:使用base64.cpp文件中的base64_encode和base64_decode来实现。下载地址
代码示例如下:
#ifndef WIDGET_H
#define WIDGET_H
#include <QtWidgets>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
QPushButton* m_encryptbtn;
QPushButton* m_decryptbtn;
QLineEdit* m_encryptedit;
QLineEdit* m_decryptedit;
};
#endif // WIDGET_H
.cpp
#include "widget.h"
#include "ui_widget.h"
#include "mycrypto.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
m_encryptbtn = new QPushButton("encrypt",this);
m_decryptbtn = new QPushButton("decrypt",this);
m_decryptedit = new QLineEdit(this);
m_encryptedit = new QLineEdit(this);
QGridLayout* lay = new QGridLayout(this);
lay->addWidget(m_encryptedit,0,0,1,1);
lay->addWidget(m_decryptedit,0,1,1,1);
lay->addWidget(m_encryptbtn,1,0,1,1);
lay->addWidget(m_decryptbtn,1,1,1,1);
this->setLayout(lay);
connect(m_encryptbtn,&QPushButton::clicked,this,[=](){
#if 0 //方法一
m_decryptedit->setText(m_encryptedit->text().toLocal8Bit().toBase64());
#else //方法二
m_decryptedit->setText(MyCrypto::encrypt(m_encryptedit->text().toStdString()).data());
#endif
});
connect(m_decryptbtn,&QPushButton::clicked,this,[=](){
#if 0
m_encryptedit->setText(QByteArray::fromBase64(m_decryptedit->text().toLocal8Bit()));
#else
m_encryptedit->setText(MyCrypto::decrypt(m_decryptedit->text().toStdString()).data());
#endif
});
}
Widget::~Widget()
{
delete ui;
}
.h
#ifndef MYCRYPTO_H
#define MYCRYPTO_H
#include <QString>
#include <iostream>
#include <windows.h>
#include <tchar.h>
#include <QDataStream>
class MyCrypto
{
public:
static const std::string encrypt(const std::string & orignal);
static const std::string decrypt(const std::string & orignal);
};
#endif // MYCRYPTO_H
.cpp
#include "mycrypto.h"
#include <QString>
#include <QDebug>
#include <iostream>
#include <bitset>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cctype>
#include <string>
#include <base64.h>
using namespace std;
/**
* @brief MyCrypto::encrypt 加密
* @param orignal
* @return
*/
const std::string MyCrypto::encrypt(const std::string &orignal)
{
std::string encoded = base64_encode(reinterpret_cast<const unsigned char*>(orignal.c_str()), orignal.length());
return encoded;
}
/**
* @brief MyCrypto::decrypt 解密
* @param orignal
* @return
*/
const std::string MyCrypto::decrypt(const std::string &orignal)
{
std::string decoded = base64_decode(orignal);
return decoded;
}
边栏推荐
猜你喜欢
Process control task
今晚战码先锋润和赛道第2期直播丨如何参与OpenHarmony代码贡献
Go从入门到实战——CSP并发机制(笔记)
Modify large online games through CE modifier
GoLand permanently activated
Go从入门到实战——行为的定义和实现(笔记)
强制 20 天内开发 APP 后集体被裁,技术负责人怒批:祝“早日倒闭!”
JVM memory structure when creating objects
Go from entry to practice -- CSP concurrency mechanism (note)
Let Ma Huateng down! Web3.0, hopeless
随机推荐
鲜为人知的mysql导入数据
oracle迁移mysql唯一索引大小写不区分别怕
TreeSet详解
让马化腾失望了!Web3.0,毫无希望
根据自定义excel标题模板快速excel导出
Go从入门到实战—— 多路选择和超时控制(笔记)
有时间看看ognl表达式
Special training of guessing game
VMware vSphere esxi 7.0 installation tutorial
Go from entry to practice - multiple selection and timeout control (notes)
win11桌面出現“了解此圖片”如何删除
A set of system to reduce 10 times the traffic pressure in crowded areas
Kirin V10 installation font
Go从入门到实战——所有任务完成(笔记)
MySQL client tools are recommended. I can't imagine that it is best to use Juran
Focus! Tips for installing fonts on domestic computers
Industry case | see the operation of bank digital transformation from the king of retail
神奇的POI读取excel模板文件报错
Covering access to 2w+ traffic monitoring equipment, EMQ creates a new digital engine for all elements of traffic in Shenzhen
图解基于AQS队列实现的CountDownLatch和CyclicBarrier