今天接着上次的更新,按照项目的第二个要求,我们需要完成客户端对服务端发送文件的验证问题,即完整性度量问题。
我们直接上代码。
这里我一律不给出import毕竟都是java的基本库,自己导一下
1.客户端:
public class MyClient {
public static void main(String[] args) {
try {
//创建Socket对象
Socket socket=new Socket("127.0.0.1",8888);
//接收文件
DataInputStream bufferedReader=new DataInputStream(socket.getInputStream());
System.out.println(bufferedReader.readUTF());
FileOutputStream fo=new FileOutputStream("D:\\lx.txt");
System.out.println("开始接收文件!");
int p = 0;
//接收文件和md5码
while((p=bufferedReader.read())!= -1) {
fo.write(p);
fo.flush();
}
System.out.println("开始接收服务器传输的MD5码!");
String list=FileUtils.readFileToString(new File("D:/lx.txt"), "UTF-8");
System.out.println(list);
String conlist=list.substring(0, list.length()-32);
//分离文件和接收到的md5码
String md5list=list.substring(list.length()-32);
System.out.println("原文为" + conlist);
System.out.println("客户端收到的md5为" + md5list);
File file = new File("D:/lx.txt");
PrintStream ps = new PrintStream(new FileOutputStream(file));
ps.print(conlist);
ps.close();
//文件的md5码
String md5str = MD5Util.getMD5(new File("D:/lx.txt"));
System.out.println("文件的md5码:" + md5st