求教,有哪些不错的开源的即时聊天软件

2015-10-14 19:56:38 +08:00
 szdbb112

想要开发一个 app ( android ),希望提供一个样板

14804 次点击
所在节点    Android
22 条回复
jamesxu
2015-10-14 20:35:05 +08:00
telegram
gzlock
2015-10-14 20:52:11 +08:00
leancloud 的 IM demo ,我记得在 GitHub 开源
sheandhee
2015-10-14 21:03:25 +08:00
ryrubyy
2015-10-14 21:21:58 +08:00
XMPP 协议和 IRC 协议的开源客户端很多
IRC 的:
AiCiA (界面,功能特别简单,节省数据)
Yaaic ( Yet another Android IRCC Client ,界面和功能比上一个好)
Atomic (基于 Yaaic ,增添更多实用功能)
均是开源软件。
也有很多优秀的 XMPP 开源软件。
rootooroot
2015-10-14 21:25:00 +08:00
TOX
rootooroot
2015-10-14 21:25:35 +08:00
看错标题
zhjits
2015-10-14 21:42:57 +08:00
anthonyeef
2015-10-14 22:02:39 +08:00
Telegram +1 。

不過代碼好複雜。
gzlock
2015-10-15 01:07:29 +08:00
@jamesxu
@sheandhee
@ryrubyy
@anthonyeef 其实用 WebSocket+aes 加密行得通吗?
sogisha
2015-10-15 07:03:07 +08:00
@gzlock AES 是对称加密,你还至少需要了解如何交换 AES 密钥的知识(需要不对称加密或者某种密钥交换协议)。
此外,还要考虑消息的完整性,因为即使是加密了,传输中的错误或者其他因素也可以导致消息在解密后和原文不一样。还要考虑消息来源的可靠性,包括如何确定发送者没有被仿冒。还有可能需要可以或者不可抵赖性,等等。
way2explore2
2015-10-15 07:37:46 +08:00
Pidgin
gzlock
2015-10-15 12:06:52 +08:00
@sogisha 只能由客户端软件集成 AES 密匙了吧
sogisha
2015-10-19 09:59:23 +08:00
@gzlock 你这不是坑爹呢么,如果有人分析了你的代码,这和没有加密还有区别吗?
(别和我说使用混淆什么的,没用。密码学第一定律:你的加密方式总是公开的。)

你需要使用不对称加密,或者例如 Diffie-Hellman 这样的密钥交换协议。
gzlock
2015-10-19 13:14:28 +08:00
@sogisha 那通过 Res 交换随机生成的 AES 密匙?
LeanCloudRRY
2015-10-19 16:12:28 +08:00
hi~我们的实时通信部分希望可以给您参考→https://leancloud.cn/docs/realtime_v2.html
包括我们的一些 Demo 还有部分源码。
sogisha
2015-10-19 17:28:16 +08:00
@gzlock Res 是什么?
gzlock
2015-10-19 21:15:24 +08:00
@sogisha RSA ,打错了。。。
sogisha
2015-10-20 00:50:57 +08:00
@gzlock 可以, RSA 现在需要 2048bit 以上的 RSA 才算安全。你必须想办法能验证你所使用的、认为是对方的 RSA 公钥确实来自于对方,避免中间人攻击。

这方法最简单的是,将自己的 RSA 公钥散列,然后取前若干比特生成一个几个字母或者汉字构成的短句。对方收到你的公钥之后,也用同样的算法生成一个短句。然后两人用语音等方式核对。

如果你能进一步管理公钥,还可以参考 ZRTP 的协议:因为两个人第一次建立的通信很少有被中间人攻击盯上的,所以可以用过去成功交换的密钥作为对未来的密钥的认证。
gzlock
2015-10-20 01:58:41 +08:00
@sogisha 慢,慢着。。。其实我初衷只是想用 RSA+AES 进行 restful (不想弄 HTTPS )和 websocket (不想弄 wss )客户端和服务器之间数据通信
为嘛不想用 HTTPS 和 wss 呢,其实就是不会弄😂😂😂,怕玩坏服务器
图的只是数据不会直白的在互联网上传输
其实我感觉用 base64 然后随便混淆一下 base64 字符串的一些位置的字符也可以达到目的,例如 a 换成 b , 1 换成 2 之类的
sogisha
2015-10-20 06:32:14 +08:00
@gzlock 看你要安全到什么程度了。用 Base64 只能让你的 ISP 或者维护网络的人没什么罪恶感(不会一眼看出东西)。想破解几分钟就够了。

如果是 RSA+AES ,那就是实际意义上很安全了,实现得好的话破解需要很多很多很多资源的那种。比如需要超级计算机。

如果你嫌 AES 的实现太复杂或者太慢,可以考虑用 Salsa20 。交换密钥可以换成 curve25519 。这里只是谈剩下的问题,就是实现安全目标的链条上还缺少的一环。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/228057

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX