当前位置: 首页 > news >正文

什么网站做app好网站建设的后如何发布

什么网站做app好,网站建设的后如何发布,合肥品牌型网站建设地址,中国设计联盟网服务特点前言 项目开发时,配置文件中某些信息不适合直接明文显示,本文提供基于对称密钥的AES-256算法的加解密工具,可集成到项目中。 AES讲解 以下是我分享的一个在国产信创系统(Linux)下使用openssl实现AES加解密的博文 对称加密--AES加解密 本文…

前言

        项目开发时,配置文件中某些信息不适合直接明文显示,本文提供基于对称密钥的AES-256算法的加解密工具,可集成到项目中。

AES讲解

以下是我分享的一个在国产信创系统(Linux)下使用openssl实现AES加解密的博文

对称加密--AES加解密

本文使用的aes-256是高安全性的算法,对称密钥不泄露,别人很难破解。

QT图形应用效果图

内容和对称密钥都支持中英文。

命令行工具效果图

命令行工具,方便项目中通过调用第三方应用获取打印信息来获取加/解密的结果。

源码讲解

本文的源码引用的是第三方源码QT-AES,只需要把以下两个文件拷贝到QT项目与main.cpp同级目录即可

另外,编写一个实现调用功能的头文件(qaes_openssl.h),如下所示

#ifndef QAES_OPENSSL_H
#define QAES_OPENSSL_H
// qaes_openssl.h
#include <QByteArray>
#include <QCryptographicHash>
#include <QRandomGenerator>
#include "qaesencryption.h"class QAesOpenssl {
public:static QByteArray encrypt(const QByteArray &data, const QString &password) {// 生成随机saltQByteArray salt = generateSalt(8);// 生成密钥和IVKeyIV keyiv = generateKeyIV(password.toUtf8(), salt);// 使用修正后的QAESEncryption接口QAESEncryption aes(QAESEncryption::AES_256, QAESEncryption::CBC, QAESEncryption::PKCS7);QByteArray encrypted = aes.encode(data, keyiv.key, keyiv.iv);// 组合Salted头return ("Salted__" + salt + encrypted).toBase64();}static QByteArray decrypt(const QByteArray &data, const QString &password) {QByteArray decoded = QByteArray::fromBase64(data);// 提取salt和密文if (!decoded.startsWith("Salted__") || decoded.size() < 16) {return QByteArray();}QByteArray salt = decoded.mid(8, 8);QByteArray cipherData = decoded.mid(16);// 生成密钥和IVKeyIV keyiv = generateKeyIV(password.toUtf8(), salt);QAESEncryption aes(QAESEncryption::AES_256, QAESEncryption::CBC, QAESEncryption::PKCS7);QByteArray decrypted = aes.decode(cipherData, keyiv.key, keyiv.iv);// 手动移除PKCS#7填充(核心修复)const int AES_BLOCK_SIZE = 16;if (!decrypted.isEmpty()) {char lastChar = decrypted.back();if (lastChar > 0 && lastChar <= AES_BLOCK_SIZE) {if (decrypted.right(lastChar).count(lastChar) == lastChar) {decrypted.chop(lastChar);}}}return decrypted;}private:struct KeyIV {QByteArray key;QByteArray iv;};static QByteArray generateSalt(int length) {QByteArray salt;salt.resize(length);QRandomGenerator::global()->fillRange(reinterpret_cast<quint32*>(salt.data()),length / sizeof(quint32));return salt;}static KeyIV generateKeyIV(const QByteArray &password, const QByteArray &salt) {QByteArray keyivData;QByteArray md5Hash;QCryptographicHash md5(QCryptographicHash::Md5);const int keySize = 32; // AES-256const int ivSize = 16;  // IV for CBCconst int required = keySize + ivSize;while (keyivData.size() < required) {md5.reset();if (!md5Hash.isEmpty()) {md5.addData(md5Hash);}md5.addData(password);md5.addData(salt);md5Hash = md5.result();keyivData.append(md5Hash);}return {keyivData.left(keySize),keyivData.mid(keySize, ivSize)};}
};
#endif // QAES_OPENSSL_H

引用代码如下

#include "qaes_openssl.h"QString password=ui->pwd_lineEdit->text();
QString plainText=ui->src_textEdit->toPlainText();{// 加密QByteArray encrypted = QAesOpenssl::encrypt(plainText.toUtf8(), password);QString encryptedstr = QString::fromUtf8(encrypted);//qDebug() << "Encrypted Base64:" << encryptedstr;}{// 解密QByteArray decrypted = QAesOpenssl::decrypt(plainText.toUtf8(), password);QString decryptedstr = QString::fromUtf8(decrypted);qDebug() << "decrypted Base64:" << decryptedstr;
}
http://www.dtcms.com/a/565722.html

相关文章:

  • 从零开始的Qt开发指南:(二)使用Qt Creator构建项目与Qt底层机制的深度解析
  • UVa 1326 Jurassic Remains
  • Readest(电子书阅读器) v0.9.91
  • Flink 优化-数据倾斜
  • 遵义网站网站建设江阴便宜做网站
  • 大模型RLHF:PPO原理与源码解读
  • Mojo变量知识点解读
  • Linux之rsyslog(2)输入输出配置
  • 整体设计 全面梳理复盘 之17 三套表制表的支持和支撑以及编程基础 之2
  • 凯文·凯利《2049:未来10000天的可能》
  • 网站百度建设高端网站设计百家号
  • ctypes.pythonapi.PyThreadState_SetAsyncExc作用详解
  • pyside6常用控件: QPushButton()按钮切换、带图片的按钮
  • Python逻辑运算符
  • MinGW下载、安装和使用教程(附安装包,适合新手)
  • lol做任务领头像网站微商城网站建设平台
  • 百日挑战——单词篇(第十二天)
  • (单调队列、ST 表)洛谷 P2216 HAOI2007 理想的正方形 / P2219 HAOI2007 修筑绿化带
  • Spark RDD 编程从驱动程序到共享变量、Shuffle 与持久化
  • 网站 面包屑网站开发工作流审批流
  • 网站建设广金手指六六十四在线建站系统
  • 排序还有分页
  • electron对于图片/视频无法加载的问题
  • TDengine 字符串函数 CHAR 用户手册
  • 股票信息收集系统设计
  • 深圳网站建设 设计首选公司红色扁平化网站
  • 深度学习PINN!从入门到精通!
  • 电子商务网站建设内容新手开店适合开什么店
  • Java 后端面试干货:四大核心模块高频考点深度解析
  • 交换机路由器基础(三)--常见接口、线缆和器件