-
大小: 20KB文件类型: .7z金币: 2下载: 1 次发布日期: 2021-06-14
- 语言: Java
- 标签: Qt AES ECB PKCS5Padding
资源简介
最近找Qt下可用的与java通用的AES加密解密代码。
openssl不是很好用(不会和Qt编译到一起。。。)
所以参考网上的资料,终于找到了一个C++可用的代码,稍作修改。
代码片段和文件信息
#include “aestools.h“
#include
AESTools::AESTools(QString *keyqs)
{
QByteArray key = keyqs->toLocal8Bit();
if(key.size() != 16)
{
char keys[17] = “\0“;
for(int i = 0;i < 16;i++)
{
keys[i] = key.at(i % key.size());
}
keys[16] = ‘\0‘;
crijndael.MakeKey(keys““);
} else{
crijndael.MakeKey(key.data()““);
}
}
QString* AESTools::Decrypt(const QString *hexData)
{
char *da = NULL;
try{
QByteArray a = QByteArray::fromHex(hexData->toLocal8Bit());
int length = a.size() + 1;
da = new char[length * 2];
crijndael.Decrypt(a.data() da length - 1);
int max = 0;
for(int i = length - 2;i > -1;i--){
if(da[i] <= ‘\x10‘ && da[i] >= ‘\x00‘){
da[i] = 0;
max++;
} else{
break;
}
}
QString *r2 = new QString(QString::fromLocal8Bit(dalength - max) );
delete[] da;
da = NULL;
return r2;
}catch(QString exc){
if(da != NULL){
delete []da;
}
return NULL;
}
}
QString* AESTools::Encrypt(const QString * data)
{
char* p_data = NULL;
char *szDataOut = NULL;
try{
//待加密字节数
int length=data->toLocal8Bit().size();
//块数
int block_num=length/16;
if(length%16)
{
block_num++;
}
//构造加密块padding方式为PKCS7加密过程中,使用的块
p_data=new char[block_num*16+1];
memset(p_data0x00block_num*16+1);
memcpy(p_data data->toLocal8Bit().data() length);
//padding块前一部分长度
int k=length%16;
//不padding块数
int j=length/16;
//padding块后一部分长度
int padding=16-k;
for(int i=0;i {
p_data[j*BLOCK_SIZE+k+i]=padding;
}
p_data[j*BLOCK_SIZE+k+padding]=‘\0‘;
//padding 结束
//加密后的密文
szDataOut = new char[block_num*16+1];
memset(szDataOut 0 block_num*16+1);
//加密字符串
crijndael.Encrypt((char*)p_data szDataOut block_num*16);
QString *result = new QString(QByteArray(szDataOut block_num*16).toHex());
delete[] p_data;
p_data = NULL;
delete[] szDataOut;
szDataOut = NULL;
return result;
}catch(QString){
if(p_data != NULL){
delete p_data;
}
if(szDataOut != NULL){
delete szDataOut;
}
return NULL;
}
}
相关资源
- 基于RocketMQ的MQTT消息推送服务器分布
- JS实现AES-GCM加密,java实现AES-GCM解密。
- 完美使用RSA2结合AES对数据进行加密兼
- aes加密算法 五种模式
- java连接mqtt所需jar包.zip
- Qt调用Android原生Toast控件,含源码
- Android实现登录界面和功能
- RSA加密传输AES的key和iv js加密 java解
- android MQTT 带SSL加密连接demo
- C++Qt5实现雷达及余晖扫描,探测发现
- Qt for Android 调用原生系统摄像头进行
- Qt for android打开原生系统相机和相册
- C++最强版中国象棋
- C++ 条码,二维码生成程序Qt 界面
- 高性能AES256对称加解密,兼容Java、
- 用mqttv3.jar做的android测试客户端
- BouncyCastleProvider jar包
- Qt On Android核心编程 书对应源码
- mqtt协议实现 Android推送服务端、客户
- 最简单socket通讯
- MyMQTT.apk
- Java使用winzipaes对zip文件的操作支持中
- mqtt源代码
- MQTT推送简单服务端java代码实现
- SpringMVC+Spring+Mybatis框架整合Mqttt通信协
- mqtt_demo java端实现 包含 mqtt jar依赖包
- 利用apache-apollo-1.7.1创建MQTT broker和服
- 全志A40i使用demo
- android使用AES加密对文件进行前中后三
- Apk icon editor_1.8.0 中文版(APK图标编辑
评论
共有 条评论