QT 基于AES加解密的使用,解析java端发来的密文

背景

java端往ukey中写授权信息,C++端从ukey中读取授权信息。
java端写入的授权信息是加密的,并且要可逆。
因为java端采用的是AES加密的,所以我(C++端)也只好采用对等形式搞定了。

使用的库

开发环境:Win10 + Qt5.13
QT中AES加解密:采用Qt-AES第三方库。

github:https://github.com/bricke/Qt-AES
AES在线加解密工具:https://tool.lmeee.com/jiami/aes

开始使用

1. 配置源码
在拉取的代码中,只需将qaesencryption.h和qaesencryption.cpp添加至代码当中即可使用。

在这里插入图片描述
2. java端
java端AES的各属性采用以下:
(1)AES加密模式:CFB
(2)AES填充模式:zeropadding
(3)AES秘钥长度:128位
(4)AES秘钥:d4f7d5057af81ae9(16位,自定义即可)
(5)AES向量:a21186a7b484db71(16位,自定义即可)
最终java端 将原生json数据 采用以上形式加密得到密文,再将密文转为base64编码保存至ukey中。

3. C++端
规则一定要迎合java端的,否则无法正确解密。

void Ukey::readAuthorizationCode(const QString& devnum)
{
	// ... 
    qInfo() << ">>>>>> base64 data:> " << QByteArray(authorizationcode).data();
        //qInfo() << QByteArray(authorizationcode).left(codelen+1);

        QString decodeContext = Utils::decodeContext(QByteArray(authorizationcode));  // 传入base64, 解析为明文
        qDebug() << ">>>>>> decodec data:> " << decodeContext;
	// ...
}


QString Utils::decodeContext(QByteArray base64)
{
    QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::CFB, QAESEncryption::ISO);
    // 此处秘钥和向量必须与java端保持一致
    QString key("d4f7d5057af81ae9");    // 秘钥
    QString iv("a21186a7b484db71");     // 向量

    QByteArray encryContext = QByteArray::fromBase64(base64);  // 解析base64, 还原为密文
//    qDebug() << "密文:>>>  " << encryContext;

    QByteArray decodeText = encryption.decode(encryContext, key.toUtf8(), iv.toUtf8()); // 解析密文
//    qDebug() << "明文1:>>>  " << decodeText;

    QString decodedString = QString(encryption.removePadding(decodeText));
//    qDebug() << "明文2:>>>  " << decodedString;

    return decodedString;
}

看看运行数据

[json-debug] open(read) uKeyConfig.json successful.
"[json-debug]  get PIN from uKeyConfig.json successful."
"[Debug-ukey] has 1 devices."
"-----------------[K1426211029B3351]-----------------"
"[Debug-ukey] connect to [K1426211029B3351] successful."
>>>>>> base64 data:>  6zANuEJL0oDH0GlVpnMm779EreNb9NT48ZLnqx5ZsuviAR/UAk4wFj3BA5VlQTAZdN3GCQA+Jja42HNONCgnYbBeGZIkPbQfN84XLcSZsrjT4AEI2Zbo
密文:>>>   "\xEB""0\r\xB8""BK\xD2\x80\xC7\xD0iU\xA6s&\xEF\xBF""D\xAD\xE3[\xF4\xD4\xF8\xF1\x92\xE7\xAB\x1EY\xB2\xEB\xE2\x01\x1F\xD4\x02N0\x16=\xC1\x03\x95""eA0\x19t\xDD\xC6\t\x00>&6\xB8\xD8sN4('a\xB0^\x19\x92$=\xB4\x1F""7\xCE\x17-\xC4\x99\xB2\xB8\xD3\xE0\x01\b\xD9\x96\xE8"
明文1:>>>   "{\"authorizationTimeDay\":12,\"authorizationTimeEnd\":\"\",\"hgAppName\":\"HG_SFC\",\"timetype\":1}"
明文2:>>>   "{\"authorizationTimeDay\":12,\"authorizationTimeEnd\":\"\",\"hgAppName\":\"HG_SFC\",\"timetype\":1}"
>>>>>> decodec data:>  "{\"authorizationTimeDay\":12,\"authorizationTimeEnd\":\"\",\"hgAppName\":\"HG_SFC\",\"timetype\":1}"
"[readAuth-debug] authorizationTimeDay is [12]."
"[readAuth-debug] hgAppName is [HG_SFC]."
"[readAuth-debug] timetype is [1(非永久)]."

此时ukey中的经java端加密的授权信息已被 充分的解析出来了。


好家伙,将得到的base64拿到 AES在线加解密工具去炮制一下。
在这里插入图片描述
更多基于AES的例子,参考该篇文章:
QT中AES的初步测试使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/4031.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp项目打包apk相关(androidStudio,Hbuildx,dCloud)

1、先注册和登陆dCloud平台&#xff0c;管理应用信息。 需要准备的参数(3个) APP_ID&#xff08;如&#xff1a;__UNI__123ABCD&#xff09; 包名&#xff08;如&#xff1a;com.hx.mhoa&#xff09; 应用签名&#xff08;应用sha1&#xff0c;应用md5&#xff0c;应用sha256&…

HLS协议格式

HLS协议格式 ES流&#xff08;Elementary Stream&#xff09;&#xff1a;基本码流&#xff0c;不分段的音频、视频或者其他信息的连续码流PES流&#xff0c;把基本码流ES分割成段&#xff0c;并加上相应头文件打包成形的打包基本码流PS流&#xff08;Program Stream&#xff…

一文解析RISC-V SiFive U54内核——中断和异常

中断 U54内核支持M模式和S模式中断。默认情况下&#xff0c;所有中断都在M模式下处理 。对于支持S模式的 hart&#xff0c;可以有选择地将中断委托给S模式。 U54中断架构如下&#xff1a; U54内核还支持两种类型的 RISC-V 中断&#xff1a;本地 和全局 。 本地中断 &#xf…

目标检测算法之Fast R-CNN和Faster R-CNN原理

一、Fast R-CNN原理 在SPPNet中&#xff0c;实际上特征提取和区域分类两个步骤还是分离的。只是使用ROI池化层提取了每个区域的特征&#xff0c;在对这些区域分类时&#xff0c;还是使用传统的SVM作为分类器。Fast R-CNN相比SPPNet更进一步&#xff0c;不再使用SVM作为分类器&a…

议程更新 | Occlum Meetup 北京站--一起来聊机密计算 TEE

首届 Occlum Meetup 还有 3 天就要和大家见面啦&#xff01;北京的小伙伴们&#xff0c;我们来喽&#xff01;为了能和大家有更充足的时间交流沟通&#xff0c;我们小小的调整了一下议程&#xff5e;最新议程请见下方。本次 Meetup 是 Occlum 开源社区首次在北京线下开展&#…

yolo车牌识别、车辆识别、行人识别、车距识别源码(包含单目双目)

视频效果 车牌识别视频车辆识别视频yolov5车辆识别视频yolov5 yoloR对比行人车辆识别视频yolo车距1完整源码http://www.hedaoapp.com/goods/goodsDetails?pid4132 系统设计 车牌自动识别是以计算机视觉处理、数字图像处理、模式识别等技术为基础&#xff0c;对摄像机所拍摄的…

从零开始,简单几步教会你shopify店铺设计

在弄完shopify的基础配置之后&#xff0c;我们就开始可以设计一下我们的店铺。人都是视觉动物&#xff0c;很难不被好看的东西吸引&#xff0c;所以把店面弄得漂漂亮亮的就是我们赢得顾客信赖的第一步。接下来龙哥会详细地解析一下&#xff0c;shopify的店铺设计与配置要怎么展…

Elasticsearch 核心技术(八):常用 DSL 查询(全文搜索、精确匹配、布尔查询)

❤️ 博客主页&#xff1a;水滴技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; &#x1f338; 订阅专栏&#xff1a;大数据核心技术从入门到精通 文章目录一、全文搜索1.1 查询所有&#xff08;match_all&#xff09;1.2 全文检索&…

CS-Stdio Display Builder

Display Builder 1) 操作界面编辑器和Runtime 2&#xff09;在EPICS edd/dm, medm, edm, ...想法上构建 3&#xff09;与CS-Studio BOY兼容性非常好 4&#xff09;大约2015年在CS-Stdio/Eclipse中开始&#xff0c;现在在CS-Studio/Phoebus中 5) 从209年以Web Runtime获取。…

logstash+elasticsearch+Kibana(ELK)日志收集

文章目录一.安装elasticsearch二. 安装kibana三.配置logstash四.springboot整合logstash五.spring整合Elastic Search不要一股脑执行以下语句,请观察修改要修改的地方 注意给logstash,elasticsearch,kibana释放端口,云服务器提供商和系统的端口 一.安装elasticsearch # 安装e…

【Linux】共享内存

1.共享内存的概念共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间数据传递不再涉及到内核&#xff0c;换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。通信的前提是让两个进程看到同一份资源&#xff0c;信息的…

Multisim14.3安装包下载及安装教程

[软件大小]: 888 MB [安装环境]: Win11/Win 10 [软件安装包下载]:https://pan.quark.cn/s/1c0217caf24a Multisim是美国国家仪器&#xff08;NI&#xff09;有限公司推出的以Windows为基础的仿真工具&#xff0c;适用于板级的模拟/数字电路板的设计工作 安装步骤 1.选中下载好…

自主AI能力加速企业智能化转型 | 爱分析报告

报告编委 黄勇 爱分析合伙人&首席分析师 孟晨静 爱分析分析师 外部专家&#xff08;按姓氏拼音排序&#xff09; 杜晨阳 力维智联 五维实验室主任 王哲 九章云极DataCanvas 雅图BU总经理 特别鸣谢&#xff08;按拼音排序&#xff09; 目录 1. 报告综述 2. 金融…

Java 3个常用工作流引擎

一&#xff1a;Java工作流框架是一种用于设计、执行和管理工作流程的技术。以下是几个常见的Java工作流框架&#xff1a; Activiti&#xff1a;Activiti是一款流行的开源Java工作流引擎&#xff0c;它基于BPMN 2.0标准&#xff0c;支持复杂的工作流程设计和管理。Activiti具有高…

Centos7 XFS(dm-0):Internal error XFS_WANT_CORRUPTED_GOTO

在k8s的道路上我们都是小白&#xff0c;每天启动虚机都会遇到各种各样的问题&#xff0c;这不 部署的k8s虚机启动发现操作系统启动异常&#xff0c;提示如下报错信息 XFS&#xff08;dm-0&#xff09;:Internal error XFS_WANT_CORRUPTED_GOTO at line 1700 of file fs/xfs/l…

【周末闲谈】文心一言,模仿还是超越?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 周末闲谈 ✨第一周 二进制VS三进制 文章目录周末闲谈前言一、背景环境二、文心一言&#xff1f;(_)?三、文心一言的优势&#xff1f;&#x1f617;&#x1f617;&#x1f617;四、文心一…

ADC选型关注的参数

目前&#xff0c;用来量化ADC动态性能的六个技术指标分别为SINAD&#xff08;信号与噪声失真比&#xff09;&#xff0c;ENOB&#xff08;有效位数&#xff09;&#xff0c;SNR&#xff08;信噪比&#xff09;&#xff0c;THD&#xff08;总谐波失真&#xff09;&#xff0c;TH…

ChatGPT原理解析

文章目录Transformer模型结构构成组件整体流程GPT预训练微调模型GPT2GPT3局限性GPT4相关论文Transformer Transformer&#xff0c;这是一种仅依赖于注意力机制而不使用循环或卷积的简单模型&#xff0c;它简单而有效&#xff0c;并且在性能方面表现出色。 在时序模型中&#…

GPT-4 介绍

1 简介 本文根据openAI的2023年3月的《GPT-4 Technical Report 》翻译总结的。 原文地址&#xff1a;https://arxiv.org/pdf/2303.08774.pdf 原文确实没有GPT-4 具体的模型结构&#xff0c;openAI向盈利组织、非公开方向发展了。也没透露硬件、训练成本、训练数据、训练方法等…

原生获取DOM节点

目录 一、通过document顶层方法获取 1、获取html标签 2、获取head标签 3、获取body标签 二、getElementBy系列获取 1、ID获取 2、类名获取 3、name属性获取 4、标签名获取 三、query系列获取 1、通过query选择器获取一个元素 2、通过querry选择器获取一组元素 四、通过…
最新文章