基于openssl的安全通信

本文分享了基于openssl实现安全通信的过程,包括身份认证、加密通信和线程使用。通过在MFC中结合socket和openssl,创建了一个安全通信实例,涉及了SSL_CTX的初始化、证书与私钥的载入、加解密以及线程管理。同时,强调了调试和理解源码的重要性,以及在学习过程中对开源资源的感激。
摘要由CSDN通过智能技术生成

通过一段时间的学习,编写了一个安全通信实例,在这里分享一下心得。

openssl的安装和编译我在这里就不多说了,可以到openssl官网下载安装,https://www.openssl.org/。

mfc的学习在前面已经介绍了,在这里也不多介绍了。

可以看到编写一个综合性较强的项目,需要的是大量的知识,比如说socket编程,你需要了解其函数的用法和加载的流程。一个项目的大致方向应该有一定的方向感,我自己画了一个流程图,然后跟着设计一个个的实现功能。
在这里插入图片描述
图不怎么好看啊,领会一下吧。

大致实现思路**

开始实现,搭建基本框架,不需要添加其他的东西,只需要将socket的框架搭建起来,然后再慢慢往里面加东西。
这些基本的我就不介绍了,如果基本的socket都不会那后面的也就不用写了。
在这里只需注意的是在mfc中控件的消息映射,因为socket套接字基本上都是char *类型,而控件则基本是cstring类型,所以需要用到一些转换函数:
char *类型转cstring:
普通字符:cstring str.Format(_T("%s"),char *);
宽字符:str.Format(_T("%s"),(CStringW)char *);
根据自己需要来,类型不匹配会出现乱码。
cstring 转 char *:
普通:cstring (char *)Msg.GetBuffer();
后面这个更好用,但要加:USES_CONVERSION;
char *source=T2A(strMsg);

编写线程

当完成了基本框架的设计,就要开始实现一些功能,比如说线程函数。
为什么要实现线程函数呢?在这里就要说一下socket的一些特性了。
普通socket是基于阻塞模式工作的,当然也可以利用mfc封装的CAsyncSocket类,基于非阻塞模式,但不怎么好用,所以就不在这里说了。
当你使用线程与阻塞相结合时,就相当于实现了异步的效果。主线程继续进行工作,子线程 实现阻塞监听,接收等功能。
主线程代码,介绍一下几个重要参数,第三个参数是你的子线程函数名,第四个参数本来可以为空,但这里主线程为类函数,所以调用this指针指向类对象,从而调用。
注意点:
因为调用的是全局变量,所以子线程函数应该声明为静态函数,不然

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值