UChat

一款使用 PHP 开发的命令行聊天软件,基于 UDP 协议

本项目属于个人无聊写的作品,有不足的地方欢迎提 Issues 或者 Pull Request。

功能特性

支持分组和私聊 支持 AES-256-CFB 强加密传输 支持抗重放攻击 支持自定义服务器 支持储存配置 使用 UDP 协议 支持断线重连

基本介绍

UChat 其实没有一个明确的分组或者私聊的概念,只要两个以上的用户使用相同的 key 连接服务器,就能一起聊天。

例如用户 A 和用户 B 都使用 2333333 这个 Key 登陆到服务器,那么 A 和 B 就可以一起聊天。

如果用户 A 使用 2333333 这个 Key,而用户 B 使用 6666666 这个 Key,那么 A 和 B 将无法聊天。

实现原理

用户在发送消息的时候,使用自己的 Key 加密消息内容,服务器收到加密的消息后不做任何处理,发送给所有的客户端,其他客户端收到加密的消息后,如果 Key 和发送者的 Key 相同,就可以解密消息内容,如果不相同则无法解密,自然就无法得到消息内容。

于是呢,只要有另一个人的 Key 和你的 Key 相同,那么你们就可以互相看见对方发的消息,如果有很多人都使用一样的 Key,那就可以成为一个群组。

环境依赖

运行服务端需要:Swoole、Redis

运行客户端需要:Pthreads

安装与运行

首先将项目 clone 到本地,然后进入目录

git clone https://github.com/kasuganosoras/UChat cd UChat/

接着启动服务端,推荐在 screen 里运行,或者使用 nohup

php server.php

然后客户端也是同样的启动方式

php client.php

启动客户端以后根据提示设置即可。

关于抗重放攻击

抗重放攻击使用系统时间进行验证,因此请确保聊天各方的时间相差不要超过 1 分钟,否则会验证失败。

开源协议

此项目基于 GPL v3.0 协议开源

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。
3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考学习用!
4、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。