您的位置:首页 > 理论基础 > 计算机网络

RAKNET内核 - Secure Connections 网络通讯安全连接

2013-05-28 11:24 155 查看

1. 前言

随着游戏上线运营之后,一些心怀不轨的玩家就会通过网络攻击或者窃取的方式来作弊,最常见的就我们所说的外挂。那么RakNet是如何规避这些玩家的攻击呢?

RakNet使用传统的网络安全连接的方法从第一步就禁止非常规终端连接到服务器。

本文不使用理论性的对话,只使用简单的例子演示如何对RakNet的网络通讯信息进行加密。本文的基于《RAKENT创建UDP实例,RAKNET简单通讯实例》只上,建议先阅读该篇文章。

2. RakNet Secure Connections处理流程

全局定义 #define LIBCAT_SECURITY 1
包含头文件 #include "SecureHandshake.h"
服务器生成公钥和私钥,并且把生成的公钥给客户端使用
客户端使用公钥连接服务器

3. Server 服务端处理程序

#if LIBCAT_SECURITY==1
#include "SecureHandshake.h"
#endif

int main(void)
{
RakNet::RakPeerInterface *server=RakNet::RakPeerInterface::GetInstance();
server->SetIncomingPassword("user_defined_string", (int)strlen("user_defined_string"));
server->SetTimeoutTime(30000,RakNet::UNASSIGNED_SYSTEM_ADDRESS);

// 只需要下面这段代码
#if LIBCAT_SECURITY==1
cat::EasyHandshake handshake;
char public_key[cat::EasyHandshake::PUBLIC_KEY_BYTES];
char private_key[cat::EasyHandshake::PRIVATE_KEY_BYTES];
handshake.GenerateServerKey(public_key, private_key);
server->InitializeSecurity(public_key, private_key, false);
FILE *fp = fopen("publicKey.dat","wb"); // 文件的保存路径根据自己项目需要设置
fwrite(public_key,sizeof(public_key),1,fp);
fclose(fp);
#endif


4. Client 客户端处理程序

#if LIBCAT_SECURITY==1
#include "SecureHandshake.h"
#endif

int main(void)
{

...这里省略几万行代码

#if LIBCAT_SECURITY==1
// 使用安全连接
// 读取公钥,这个文件是由服务器生成,并且给我的
char public_key[cat::EasyHandshake::PUBLIC_KEY_BYTES];
FILE *fp = fopen("publicKey.dat","rb");
fread(public_key,sizeof(public_key),1,fp);
fclose(fp);

// RakNet提供处理公钥的类库
RakNet::PublicKey pk;
pk.remoteServerPublicKey=public_key;
pk.publicKeyMode=RakNet::PKM_USE_KNOWN_PUBLIC_KEY;

// 我只需在连接服务器的时候使用见可以了,^_^   &pk就是我啦~~
bool b = client->Connect(ip, atoi(serverPort), "user_defined_string", (int) strlen("user_defined_string"), &pk)==RakNet::CONNECTION_ATTEMPT_STARTED;
#else
// 不使用安全连接
RakNet::ConnectionAttemptResult car = client->Connect(ip, atoi(serverPort), "user_defined_string", (int) strlen("user_defined_string"));
RakAssert(car==RakNet::CONNECTION_ATTEMPT_STARTED);
#endif


5. 参考阅读

RakNet Secure Connections http://www.jenkinssoftware.com/raknet/manual/secureconnections.html
一日一点RakNet(22) /article/8254212.html

您可以修改并重新发布本文,如果您能留下本文的参考连结,万分谢谢!

如果您对本文存在疑问,欢迎留言或者直接对本文评论,我会在看到的第一时间回复您。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐