#include <iostream>
#include"CSocketProtool.h"
#include"HW_DEC_AND_ENC.h"
#include"商品.h"
#include"商品二.h"
#include"EnAndDesCode.h"
#include"EncAndDecProtocol.h"
#define _CRT_SECURE_NO_WARNINGS
using namespace std;
//数据传送
int SckSendAndRec_1(CSocketProtocol* cp,unsigned char* input, int inp_len, unsigned char* output, int* out_len)
{
int result;
result = cp->socketclient_init_1();/*数据初始化*/
if (result != 0)
{
goto END;
}/*初始化未成功*/
/*客户端发送数据 ,接口接收数据*/
result = cp->socketclient_send_1(input, inp_len);
if (result != 0)
{
goto END;
}
result = cp->socketclient_recv_1(output, out_len);
if (result != 0)
{
goto END;
}
END:
result = cp->socketclient_distory();
return 0;
}
//数据加密解密
int SckEnAndDec(CSocketProtocol* cp, EncAndDecProtocol* ed, unsigned char* plainText, int Plain_length, unsigned char* crytext, int* crytext_length)
{
int result;
result = cp->socketclient_init_1();
/*定义加密电文存储的空间*/
unsigned char data[4096];
int store_length = 0;
if (result!=0)
{
cout << "数据初始化不成功" << endl;
return result;
}
/*数据加密*/
result = ed->EnCodeData(plainText, Plain_length, data, &store_length);
if (result!=0)
{
cout << "数据加密失败" << endl;
return result;
}
/*数据加密后进行数据发送*/
result = cp->socketclient_send_1(data, store_length);
if (result != 0)
{
cout << "数据发送失败" << endl;
return result;
}
/*数据接收方进行数据接收*/
result = cp->socketclient_recv_1(crytext, &store_length);
if (result!=0)
{
cout << "数据方接收数据失败" << endl;
return result;
}
/*数据解密*/
result = ed->DeCodeData(crytext, store_length, plainText, crytext_length);
if (result != 0)
{
cout << "数据解密失败" << endl;
return result;
}
/*一套流程完整走完*/
result = cp->socketclient_distory();
return 0;
}
int main(void)
{
int result = 0;/*判断程序是否成功执行的标志*/
/*学习这部分如何进行
抽象类可以没有对象 但是可以有 抽象类的指针 基类指针指向子类对象*/
CSocketProtocol *CI_1 = new CSckFactoryImp1;
unsigned char* Input_Info = new unsigned char[50];
int InputDataLength = 30;
unsigned char* Output_Info = new unsigned char[InputDataLength];
int OutputDataLength;
for (int i = 0; i < 50; i++)
{
*(Input_Info + i) = i+1;
}/*存放1->50的数据*/
result = SckSendAndRec_1(CI_1, Input_Info, InputDataLength, Output_Info, &OutputDataLength);
if (result != 0)
{
cout << "数据传输过程存在错误,数据传输失败" << endl;
return result;
}
/*数据加密解密发送接收*/
EncAndDecProtocol *ed = new HWEncAndDec;
result = SckEnAndDec(CI_1, ed, Input_Info, InputDataLength, Output_Info, &OutputDataLength);
if (result!=0)
{
cout << "数据不能作为密文发送" << endl;
return result;
}
delete[] Input_Info;
delete[] Output_Info;
return result;
}
C++数据加密技术,学习传智播客数据加密心得
需积分: 0 108 浏览量
2023-12-04
19:12:55
上传
评论
收藏 36.52MB RAR 举报
今天我刷leetcode了吗
- 粉丝: 274
- 资源: 24
最新资源
- AutoHotKey 2.0中文帮助文件
- 基于Docker-compose的Elasticsearch集群每个节点均是独立docker-compose配置而成源码.zip
- 目标检测-零售食品LOGO检测数据集-40000张图-+对应VOC-COCO-YOLO三种格式标签+数据集划分脚本
- 目标检测-零售食品LOGO检测数据集-30000张图-+对应VOC-COCO-YOLO三种格式标签+数据集划分脚本
- 目标检测-零售食品LOGO检测数据集-20000张图-+对应VOC-COCO-YOLO三种格式标签+数据集划分脚本
- 目标检测-零售食品LOGO检测数据集-10000张图-+对应VOC-COCO-YOLO三种格式标签+数据集划分脚本
- 基于GUI+MYSQL+JAVA图书管理系统文档说明+源码(高分大作业项目).zip
- 基于Qt使用C++实现图书管理系统源码+数据库(95分以上).zip
- 基于GUI+MYSQL+JAVA票务管理系统文档介绍+源码+数据库(高分大作业).zip
- Java项目-购物网站系统(java+Servlet+JSP+Mysql)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈