# MIN-VPN-Client项目说明 ## 项目开发背景说明 本项目前身是MIN-VPN-Android的V2master分支。 旧项目地址:https://gitea.qjm253.cn/PKUSZ-future-network-lab/MIN-VPN-Android 本项目所作修改有: 1. 将原有jNDN库替换为min-dev-java(项目地址:https://gitea.qjm253.cn/wefree/min-dev-java)。 2. 将除第三方库之外的代码中的主要语言由kotlin&java替换为全java。 3. 按照min-dev-java修改收发包逻辑,使得新版VPN-Client可以以MIN的方式与后台进行数据收发。 4. 修改vpn数据交互协议逻辑,使得新版VPN-Client可与VPN-Server-Go后台进行正常服务接口交互。 5. 优化界面、去除冗余代码、统一及规范项目代码结构。 本项目所提供的服务: 作为VPN-Server-Go给安卓系统提供访问内网的VPN服务。 ## 相关项目地址 MIN-VPN-Android: https://gitea.qjm253.cn/PKUSZ-future-network-lab/MIN-VPN-Android min-dev-java: https://gitea.qjm253.cn/wefree/min-dev-java VPN-Server-Go: https://gitea.qjm253.cn/PKUSZ-future-network-lab/minVpnServer-go MIN-VPN-CLI-core-go: https://gitea.qjm253.cn/PKUSZ-future-network-lab/MIN-VPN-CLI-core-go ## 开发环境 jdk版本: 1.8 Android API Platform: 30 Gradle版本: 6.7.1 ## 使用说明 导出APK,安装到安卓手机,即可使用 # MIN-VPN-Client开发说明 ## 用户名及密码说明 => 废止 用户输入的用户名将永远不作为项目中代码运行使用的用户名而存在,以避免前后端交互时因编码问题而出现BUG, 例如,用户输入的用户名RawUsername为:“张三”, 则项目中的用户名则为其经过base64编码后的Username:"5byg5LiJ", 而标识则使用再次经过base64编码后然后前面加上"/"的IdentityName:"/NWJ5ZzVMaUo-"; 可以看出,其中的Username和IdentityName均与用户注册时输入的用户名有关,但不是同一个字符串。 密码也是同理,代码运行时候的密码passwd是用户输入的原始密码RawPasswd经过md5哈希之后得到。 MINVpnSettingAPI中的用户名和密码是用户输入的RawUsername和RawPasswd,在注册和登录时再进行处理。 ## 用户名及密码说明V2 经过简化,用户输入的username将直接作为注册、登录及连接VPN时发送给后台的username而存在, 证书则是"/"+username,完全去除Base64编解码化。 密码:代码运行时候的密码passwd是用户输入的原始密码RawPasswd经过md5哈希之后得到。