常用加解密方式
这里提供两种加解密的方法。
第一种方法:使用QByteArray的toBase64和fromBase64来实现。
第二种方法:使用base64.cpp文件中的base64_encode和base64_decode来实现。下载地址
加解密调用处理
头文件.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #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
|
实现文件.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #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; }
|
方法二加解密 base64_decode 处理
.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #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
|
.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #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;
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; }
const std::string MyCrypto::decrypt(const std::string &orignal) { std::string decoded = base64_decode(orignal); return decoded; }
|
相关链接(侵删)
- qt base64加解密
=================我是分割线=================
欢迎到公众号来唠嗑: