ejupialked/cryptchat

GitHub: ejupialked/cryptchat

一个基于 Diffie-Hellman 密钥交换与 AES 加密的 Android 客户端与 Java 服务器端加密聊天应用。

Stars: 40 | Forks: 18

[![MIT License](https://badges.frapsoft.com/os/mit/mit.svg?v=103)](https://opensource.org/licenses/mit-license.php) [![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)](https://github.com/ellerbrock/open-source-badges/) # CryptChat CryptChat 是一个 Android 客户端与 Java 服务器之间的加密聊天应用,它使用 Diffie-Hellman 算法来交换公钥,并使用 AES 算法来加密/解密消息。公钥携带了任何人都可以查看的不同参数,它被用于生成共同的密钥。客户端和服务器都会生成一个密钥对:即前面提到的公钥,以及一个私钥。双方的私钥仅用于通过 Diffie-Hellman 算法计算出共同的密钥;随后会从该密钥派生出一个共享的 AES 密钥,用于加密和解密每一条消息。通过网络套接字发送的消息使用 BASE64 进行编码。 客户端 | 服务器 :-------------------------:|:-------------------------: ![](https://raw.githubusercontent.com/ejupialked/cryptchat/master/art/client.gif) | ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/47/4702d35b225a23bb4fa28065754a9e4af409a1ac60b563b5817b4fb194dc5731.gif) ## 背景 我最初是在高中时期构建并展示 CryptChat 的,作为计算机安全项目的一部分,当时我正在学习编程。正如顶部注释所说明的那样,它仍然未能达到现代安全标准。 ## 如何运行该项目 **环境要求:** 服务器需要 JDK 8+,客户端需要 Android Studio(最低 SDK 23)。 1. **服务器** — 在 IntelliJ 中将 [`server/pom.xml`](server/pom.xml) 作为 Maven 项目打开,运行 [`ServerApplication`](server/src/main/java/ServerApplication.java),然后在其窗口中选择一个端口来启动服务器。 2. **客户端** — 在 Android Studio 中打开 [`client`](client),在设备或模拟器上运行该应用,然后使用服务器的 IP 地址和相同的端口进行连接。 客户端和服务器必须处于同一网络中。
标签:AES, Android, Diffie-Hellman, DSL, JS文件枚举, Socket通信, 加密聊天, 域名枚举, 密码学, 手动系统调用