![043b9755b2bb6299c81e622c227d14f5.png](https://i-blog.csdnimg.cn/blog_migrate/27dffc2aa9ffa4d63d8b2d8bd0e573d5.png)
![10d01d45b94d53d57960dba2bbe84f05.png](https://i-blog.csdnimg.cn/blog_migrate/4746166ece49f39786d253ef368b9100.png)
![a06e6355d90f5e9ab2a1a17f7d6a180c.png](https://i-blog.csdnimg.cn/blog_migrate/e7ec22efee639e5384419d37d951befc.png)
![a06e6355d90f5e9ab2a1a17f7d6a180c.png](https://i-blog.csdnimg.cn/blog_migrate/e7ec22efee639e5384419d37d951befc.png)
1.1 功能模块流程图
为了方便系统方案的设计与功能的开发,在方案设计前,根据前面的需求分析,将系统的功能划分为口令部分功能模块和文件安全传输部分功能模块,这两个模块又各自细分为各个小模块,各小模块的功能流程图如下:
(一) 口令部分功能模块流程图
1. 登录模块流程图
在登录模块中根据需求分析设计了两种登录系统的口令模式,一个是默认口令模式,一个是一次性口令模式,当用户输入用户名及口令后,系统首先判断用户选的是默认口令类型还是一次性口令类型,如果是默认口令类型,则调用系统的默认口令处理方法将用户输入的口令经处理后,系统与数据库建立连接,连接不成功系统提示出错信息,如果连接成功,系统将口令处理后的结果跟数据库中口令表里的相应口令信息比较,经核对,口令信息一致则该用户可进入文件安全传输模块进行操作,否则提示出错信息,要求用户重新验证口令。登录模块流程图如图1所示。
1. 默认注册模块流程图
在默认注册模块中,用户输入用户名及口令。系统调用口令处理方法,接着连接数据库,连接成功则将口令信息与数据库里的记录比较,如无重复,则将口令及用户名写入数据库,并提示注册成功,如果写入数据库失败,则报失败提示。默认注册模块流程图如图2。
1. 一次性口令的注册模块流程图
在一次性口令注册模块中,用户输入用户名、口令长度、口令个数及口令。系统调用口令处理方法,接着连接数据库,连接成功则将口令信息与数据库里的记录比较,如无重复,则将最后生成的一个口令及用户名写入数据库,并显示用户要求的口令个数,失败,则报告失败提示。一次性口令的注册模块流程如图3。
(一) 文件安全传输部分功能模块流程图
1. 文件传输流程图
在文件传输模块中,用户首先选择一个要发送给服务器的文件。接着系统发送与服务器建立SSL连接的请求,成功后,系统调用文件加密方法给文件加密后,发送出去,发送成功失败都提示相应的消息。文件传输流程图如图6所示。
1. 服务器接收文件及处理流程图
在服务器接收文件及处理模块中,服务器响应客户端发来的SSL连接的请求,成功后,服务器选一个目录保存密文,接收完毕后,发送接收成功提示。服务器可以随时解密密文传输流程图如图7。
1.1 口令安全模块部分方案设计
根据口令部分功能模块流程图,口令模块的方案设计主要涉及到两种方式用于口令的认证及处理。
两种方式用于口令设计:
(1)基于单向函数
基于单向函数的方法是计算机存储口令的单向函数值而不是存储口令,当用户将口令传给计算机时,计算机使用单向函数计算,然后把单向函数的运算结果和它以前存储的单向函数值进行比较。由于计算机不再存储口令表,所以敌手侵入计算机偷取口令的威胁就减少了。
(2)基于SKEY原理
SKEY是进行口令认证方式之一,体现了一次性特性,它的实现过程如下:当用户输入初始口令pass,系统计算pass1=f(pass),pass2=f(pass1),……,pass(n+1)=f(passn)。其中n+1为用户要求生成的口令个数,系统将pass,pass1, pass2,……passn 这些口令给用户保管,而将pass(n+1)存在数据库里该用户的名字后面,当用户第一次登录时,输入用户名和口令passn,系统计算f(passn),并把它和数据库里pass(n+1)比较,如果匹配,就证明该用户身份是真的。然后系统将passn 代替pass(n+1)。用户将passn作废,下次登录时用pass(n-1)