1.基本说明
- 开发运行环境:Windows、Eclipse、SQL Server。
- 项目描述:用户在登录时利用 Kerberos 进行认证,邮箱具有基本的功能包括邮件收发、用户注册、修改密码,同时对邮件利用 RSA 进行签名。小组四人在编写开发文档的前提下使用 Java 进行开发,本人负责的是 AS、EmailServer、DES、RSA 的编写(所有代码已征得同意发出来)。
2.详细说明(一定要看)
- 该Kerberos并不是其完全体,只是实现了一些,很多地方均已省略或者是简单化,例如各个会话的DES、RSA密钥均是默认对方已知,密钥分发过程均已省略;票据验证、票据重放、票据有效期等这些均没做
- 源码中有设计文档,但只能作为参考,基本思路是一样的,但很多细节的地方还是修改了许多,具体以实现的源码为准
- 源码中的四个文件夹对应eclipse源码文件,AS(认证服务器)、Client(邮箱客户端)、EmailServer(邮件服务器,V)、TGS(票据分发服务器);两对.mdf和.ldf文件分别对应的是AS(认证服务器)、邮件服务器(V)的SQLserver数据库文件,服务器和对应的数据库记得放同一台电脑
- UI用的javaFX,jdk8以上的版本均已被移除掉,所以8以上的版本需要在客户端自行安装;每一个UI界面操作逻辑就是一个.java文件
- AS、EmailSever、TGS的程序入口均是在src文件夹下对应的.java文件,而Client的主函数在Client/src/LogRegWindow/LogRegWindow.java,注意:没有实现内网穿透,只能在同一局域网内运行,在运行之前记得修改.java文件中对应的ip地址,如果服务器都放在同一台机器还要注意端口号的
- 服务端已经实现多用户、多线程的访问;封包、解包用的是JavaStruct
- 下图分别是AS和邮件服务器的数据库(邮件放在项目文件夹下的mail文件夹);客户端邮件存储方式:放在项目的Mail文件夹下,以用户ID(账号)为文件夹,子目录有收件箱、发件箱两个文件夹。收件箱中以发件人账号和时间戳的组合表示每条邮件,内有正文、主题、附件文件;发件箱以收件人+时间戳组合为文件名表示每一条已发送的文件,每条邮件内容也都有正文、主题、附件文件。
- 账号是10位,密码是6~16位,密码是进行md5之后传到AS并保存的,避免数据库泄露造成的损失
- 了解基本逻辑结构后,可以再看设计文档中的包,以便进行下一步的理解;服务端均是采用短连接的方式
- 客户端运行一开始进入登录界面,可点击进入注册界面,会有格式验证、账号是否重复验证;登录进入主界面之后,可以修改密码。给别人发邮件会验证收件人是否存在,发送成功之后会保存在本地,会保存在邮件服务器和本地,同时邮件服务器数据库会添加一条记录表示该邮件还未被接收;点击发件箱会显示已经发送的邮件内容;点击收件箱会从邮件服务器的数据库查询有邮件则发送过来,客户端保存到本地同时将本地的所有收件箱读取并在UI显示出来,数据库也会删除对应的记录表示已被接收,没有邮件则服务器返回空邮件包,本地的邮件也会显示出来
- 本人写的代码都会有注释,其他人的看不懂也不要问我了,呃呃呃,,,因为也不是我写的
- 写的很乱。。。
3.源码
https://gitee.com/zhuhezhang/mail-base-on-kerberos
https://github.com/zhuhezhang/mail-base-on-kerberos