V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
szdbb112
V2EX  ›  Android

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

  •  3
     
  •   szdbb112 · 2015-10-14 19:56:38 +08:00 · 10732 次点击
    这是一个创建于 3121 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    如果你嫌 AES 的实现太复杂或者太慢,可以考虑用 Salsa20 。交换密钥可以换成 curve25519 。这里只是谈剩下的问题,就是实现安全目标的链条上还缺少的一环。
    Live4Liberty
        21
    Live4Liberty  
       2015-10-24 17:20:31 +08:00
    idioteque7
        22
    idioteque7  
       2015-10-25 18:13:02 +08:00
    telegram 很不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   846 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:57 · PVG 03:57 · LAX 12:57 · JFK 15:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.