ejupialked/cryptchat
GitHub: ejupialked/cryptchat
一个基于 Diffie-Hellman 密钥交换与 AES 加密的 Android 客户端与 Java 服务器端加密聊天应用。
Stars: 40 | Forks: 18
[](https://opensource.org/licenses/mit-license.php)
[](https://github.com/ellerbrock/open-source-badges/)
# CryptChat
CryptChat 是一个 Android 客户端与 Java 服务器之间的加密聊天应用,它使用 Diffie-Hellman 算法来交换公钥,并使用 AES 算法来加密/解密消息。公钥携带了任何人都可以查看的不同参数,它被用于生成共同的密钥。客户端和服务器都会生成一个密钥对:即前面提到的公钥,以及一个私钥。双方的私钥仅用于通过 Diffie-Hellman 算法计算出共同的密钥;随后会从该密钥派生出一个共享的 AES 密钥,用于加密和解密每一条消息。通过网络套接字发送的消息使用 BASE64 进行编码。
客户端 | 服务器
:-------------------------:|:-------------------------:
 | 
## 背景
我最初是在高中时期构建并展示 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通信, 加密聊天, 域名枚举, 密码学, 手动系统调用