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

如何做网站自适应三门峡建设网站哪家好

如何做网站自适应,三门峡建设网站哪家好,企业网站设计制作教程,wordpress中文名图片不显示前言 项目开发时,配置文件中某些信息不适合直接明文显示,本文提供基于对称密钥的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/409370.html

相关文章:

  • 做胃镜需那好天津津门网站A官方网站建设源码系统
  • 宁夏建设厅网站查证网站开发职业前景评估
  • 商务网站建设策划书范文无锡企业网站制作
  • 网站访问流量怎么赚钱一般网站有哪几部分构成
  • 石家庄seo网站优化网站开发和oa有什么区别
  • 简洁大气网站模板设计制作效果图
  • 网站设计高端网站设计怎么在wordpress顶栏里
  • 唐山网站从哪里找哪个网站建设公司比较好
  • 西安做网站多钱网站备案名称的影响
  • 仅仅建设银行网站打不开微网站有哪些
  • 资讯网站建设流程北京共振设计公司官网
  • 建网站服务器怎么选择广州免费孕检
  • 深圳建站公司 企网站广告网络用语
  • 还有人用asp做网站吗做企业网站联系
  • 初学者拟建网站微信建设小网站链接
  • 网站维护 英语用ps制作黑色高光网站按钮
  • 在线捏脸网站需要多少钱成都网站建设餐饮
  • 本溪做网站 淘宝店最新热门事件
  • 网站管理制度建设的必要性一流的网站建设案例
  • 汉阳网站建设哪家便宜科技小发明图片
  • 阅读网站模板下载域名备案好了后怎么做网站
  • 郑州网站优化公司哪家好南京高端网站建设工作室
  • 请问聊城网站建设做个网页大概多少钱
  • 金融机构网站建设费用j2ee网站开发买什么书
  • 沧州开发网站多少钱php 免费装修网站
  • 广州增城做网站手机怎么自己制作游戏
  • 网站的建设建议阿里云营销网站建设
  • 建立网站主机顺德网站建设教程
  • 网站怎么做好 优帮云阳春市住房规划建设局网站
  • 汇鑫网站建设装饰公司起名大全免费