文件防篡改系统(MD5加密实现)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文件防篡改系统

MD5算法概述

MD5的作用是对一段信息(message)生成信息摘(message-digest),该摘要对该信息具有唯一性,可以作为数字签名。用于验证文件的有效性(是否有丢失或损坏的数据),对用户密码的加密,在哈希函数中计算散列值。输入一个任意长度的字节串,生成一个128位的整数。由于算法的某些不可逆特征,在加密应用上有较好的安全性。并且MD5算法的使用不需要支付任何版权费用。唯一性和不可逆性都不是绝对的,从理论上分析是一种多对一的关系,但两个不同的信息产生相同摘要的概率很小。不可逆是指从输出反推输入所需的运算量和计算时间太大,使用穷搜字典的方法又需要太多的存储空间。

Web系统设计思路

本系统是基于java web,并借助strut2来实现的。基本的设计思路是通过web页面来先后两次计算系统外存中某文件的MD5值,并且进行比对,若是相同,文件没有被篡改,若是不同,则说明文件被篡改过。

Web版本文件防篡改系统详细的设计思路:通过jsp面取出系统外存中的某个需要计算的文件,jsp提交以后,通过strut2 的action 带值跳转到java的逻辑层中。在逻辑层的action中调用dao方法,dao 中封装了计算MD5值的方法。Dao方法中接受了jsp传过来的文件,并计算器MD5值,计算完成以后,将其值原路径返还给action,这是第一次计算文件的MD5值,将其保存在Session中,便于将其与

第二次的MD5值进行比对。第一次顺利执行完以后跳转到success 页面中。现在开始进行文件的第二次MD5计算,同样通过上述的方法。在计算完MD5值后,把第二次算出来的MD5值与第一次计算出来的,并且保存在session中的值进行比对,若相同,则没有变。若是不同,则说明被篡改过。

系统实现

第一步,Index.jsp中的源代码,

文件名:

第二步,struts配置文件中的源代码

method="codeCrype">

/index.jsp

/success.jsp

method="SetCrypt2">

/FilnallySuccess.jsp

/fail.jsp

第三步,经过struts2的跳转到FilesCryptAction

package com.crypt.action;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.crypt.dao.Md5_dao;

import com.opensymphony.xwork2.ActionSupport;

import com.crypt.entity.Md5FilesEntity;

public class FilesCryptAction extends ActionSupport {

private Md5FilesEntity Md5FilesEntity = new Md5FilesEntity();

HttpServletRequest request = ServletActionContext.getRequest();

HttpSession session = request.getSession();

public Md5FilesEntity getMd5FilesEntity() {

return Md5FilesEntity;

}

public void setMd5FilesEntity(Md5FilesEntity md5FilesEntity) {

Md5FilesEntity = md5FilesEntity;

}

public String execute() throws IOException {

String fileCode = null;

try {

fileCode = Md5_dao.getFileCode("e:" + Md5FilesEntity.getFilename());

session.setAttribute("fileCode", fileCode);//将第一次算出来的MD5值暂时保存在session中

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Md5FilesEntity.setFileAfterHashCode1(fileCode);

return "success";

相关文档
最新文档