精华内容
下载资源
问答
  • java 使用xsd文件 校验 xml文件

    千次阅读 2016-11-24 16:04:39
    java 使用xsd文件 校验 xml文件

    1,工具类

    package com.word.chain.prj.utils;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.Reader;
    import java.io.StringReader;
    import javax.xml.XMLConstants;
    import javax.xml.stream.XMLInputFactory;
    import javax.xml.stream.XMLStreamReader;
    import javax.xml.transform.Source;
    import javax.xml.transform.stax.StAXSource;
    import javax.xml.transform.stream.StreamSource;
    import javax.xml.validation.Schema;
    import javax.xml.validation.SchemaFactory;
    import javax.xml.validation.Validator;
    
    
    public class XMLValidateUtils {
    
    	/**
    	 * @param xmlFile  xml字符串
    	 * @param xsdFilePath  xsd 文件的全路径
    	 * @return
    	 */
    	public static String validateXMLWithXSD(String xmlFile, String xsdFilePath) {
    		XMLErrorHandler errHandler=null;
    		try {
    			Reader xmlReader = new BufferedReader(new StringReader(xmlFile));
    			Reader xsdReader = new BufferedReader(new FileReader(xsdFilePath));
    			Source xmlSource = new StreamSource(xmlReader);
    			Source xsdSource = new StreamSource(xsdReader);
    			SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    			Schema schema = factory.newSchema(xsdSource);
    			XMLStreamReader reader = XMLInputFactory.newFactory().createXMLStreamReader(xmlSource);
    			Validator validator = schema.newValidator();
    			errHandler = new XMLErrorHandler(reader);
    			validator.setErrorHandler(errHandler);
    			validator.validate(new StAXSource(reader));
    			return errHandler.getErrorElement();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    }
    
    1.1---上文提到的XMLErrorHandler 类

    package com.word.chain.prj.utils;
    
    import javax.xml.stream.XMLStreamReader;
    
    import org.xml.sax.ErrorHandler;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    
    /**
     * @author Administrator
     * 
     * XML错误处理器,用于获得XML中哪一个元素标签的数据有误
     *
     */
    public class XMLErrorHandler implements ErrorHandler {
    	private String errorElement = null;
    	private XMLStreamReader reader;
    	public XMLErrorHandler(XMLStreamReader reader) {
    		this.reader = reader;
    	}
    	@Override
    	public void warning(SAXParseException e) throws SAXException {
    		fatalError(e);
    	}
    	@Override
    	public void error(SAXParseException e) throws SAXException {
    		fatalError(e);
    	}
    	@Override
    	public void fatalError(SAXParseException e) throws SAXException {
            String lement = reader.getLocalName();
            String msg= e.getMessage();
            this.errorElement=lement+":"+msg;
    	}
    	public String getErrorElement() {
    		return errorElement;
    	}
    	public void setErrorElement(String errorElement) {
    		this.errorElement = errorElement;
    	}
    
    }
    

    2.被校验的xml文件内容

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <root>
        <name>1</name>
        <phone>12312312</phone>
        <suns>
            <name>1211111</name>
            <sex>1</sex>
        </suns>
    </root>

    3.下图为xml校验使用的 xsd 文件



    展开全文
  • Java防止文件篡改之文件校验

    千次阅读 2018-03-16 17:37:51
    Java防止文件被篡改之文件校验和 转载:请注明出处,谢谢! 1.为什么要防止文件被篡改? 答案是显然的,为了保证版权,系统安全性等。之前公司开发一个系统,技术核心是一个科学院院士的研究成果,作为一款商业...

    Java防止文件被篡改之文件校验和

    转载:请注明出处,谢谢!

    1.为什么要防止文件被篡改?

      答案是显然的,为了保证版权,系统安全性等。之前公司开发一个系统,技术核心是一个科学院院士的研究成果,作为一款商业软件来说,保证公司及作者版权是非常重要的。系统安全性就更不用说了,系统两三下就被搞垮了,那这个系统就不算是一个合格的系统。

    2.文件校验和作用

             我们都知道,一个系统或者软件都是由众多文件组成的。文件校验和的作用就是保证系统版本的正确性和唯一性。具体原理下面会详细解释。

    3.文件校验和的原理

            思路和实现的方式可能多种多样,我说的是自己的思路和实现方式,请读者自己斟酌使用。

            原理主要有两个核心

                    1.每个不同的文件的md5值是不同的

                    2.每个文件被修改后的md5会发生改变

    4.实现思路

            1. 拿到系统的根目录

            2. 采用递归,遍历目录文件

            3. 计算每个文件的md5值 , 并相加。 原因:每个文件md5值不同,相加后的md5值也必定是唯一。 一个md5值占32位,4个字节。大家都知道,1GB = 1024MB ; 1MB = 1024KB; 1KB=1024B ; 1B = 8bit ; 也就是说就算系统有10000个文件,10000*4B/1024 = 39KB 。这个值是远远小于String的最大值的。String 最大值位2GB左右,本人未亲自测试过,数据从网上得来。

            4.所有文件的md5值相加后,得到一个总的md5值,并且是唯一的。

            5.用户客户端启动时,会先校验文件和,若和服务器中的校验和不一致,则判定客户端非法,禁止其一切行为!

            注意:有些文件是一值在改变的,如log日志。故这些一直在变的文件,不应该参与文件校验和计算

    5.代码实现

    校验文件

    public class CheckSystemFolderSum {
    	
    	// 所有文件md5总和
    	private static String fileSum = "";
    	
    	/**
    	 *  遍历文件夹下的所有文件(递归) 并对每个文件计算md5值 得到所有文件的md5值之和
    	 * @param  file 软件系统的根文件夹   , suffix 目录文件后缀(以该后缀结尾的目录不会遍历和计算md5值)
    	 * @return 		系统所有文件md5之和
    	 */
    	public String traverseFolder(File file , String suffix){
    		
    		if(file == null){
    			throw new NullPointerException("遍历路径为空路径或非法路径");
    		}
    		
            if (file.exists()) { //判断文件或目录是否存在
            	
                File[] files = file.listFiles();
                
                if (files.length == 0) { // 文件夹为空
                    return null;		
                } else {
                    for (File f : files) { // 遍历文件夹
                    	
                        if (f.isDirectory()) { // 判断是否是目录
                        	
                        	if(!(f.getName().endsWith(".no"))){ // 如果不是以.no结尾的目录 则计算该目录下的文件的md5值
                        		
                            	// 递归遍历
                                traverseFolder(f,suffix); 
                        	}
                        
                        } else {
                        	// 得到文件的md5值
                            String string = checkMd5(f);
                            // 将每个文件的md5值相加
                            fileSum+=string;
                        }
                    }
                }
                
            } else {
                return null; // 目录不存在
            }
    		
            return fileSum; // 返回所有文件md5值字符串之和
    	}

    计算文件md5值

    /**
    	 * 检验文件生成唯一的md5值       作用:检验文件是否已被修改
    	 * @param file 需要检验的文件
    	 * @return	        该文件的md5值
    	 */
    	private static String checkMd5(File file) {
    
    		// 若输入的参数不是一个文件 则抛出异常
    		if(!file.isFile()){ 
    			throw new NumberFormatException("参数错误!请输入校准文件。");
    		}
    		
    		// 定义相关变量
            FileInputStream fis = null;
            byte[] rb = null;
            DigestInputStream digestInputStream  = null;
            
            try {
            	
                fis = new FileInputStream(file);
                MessageDigest md5 = MessageDigest.getInstance("md5");
                digestInputStream = new DigestInputStream(fis,md5);
                byte[] buffer = new byte[4096];
                
                while (digestInputStream.read(buffer) > 0);
                
                md5 = digestInputStream.getMessageDigest();
                rb = md5.digest();
                
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }finally{
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < rb.length; i++) {
                String a = Integer.toHexString(0XFF & rb[i]);
                if (a.length() < 2) {
                    a = '0' + a;
                }
                sb.append(a);
            }
            return sb.toString(); //得到md5值
        }

    测试

    测试结果没有问题。

    源码下载: 请注意,源码文件的包名涉及隐私已被去除,还有代码中的地址等需修改。请大家调试完成后再进行测试!

    下载地址:https://download.csdn.net/download/javabuilt/10291183

    更新一波:用swing写了一个计算文件校验和工具

    工具使用:

    输入文件夹地址,输入不查校验和数组(如果有则填写,以逗号分割)

    注意: 本工具默认不查 .properties文件校验和! 请勿作为商业用途!

    工具下载地址:https://download.csdn.net/download/javabuilt/11435080

    展开全文
  • Java校验文件是否损坏

    千次阅读 2017-09-04 16:36:35
    经常在程序操作文件时,遇到文件以及损坏的问题,那么如何校验文件是否损坏呢?这就需要Apache Tika包了,maven引用如下: org.apache.tika tika-parsers 1.16 org.apache.t

    经常在程序操作文件时,遇到文件以及损坏的问题,那么如何校验文件是否损坏呢?这就需要Apache Tika包了,maven引用如下:

    <!-- https://mvnrepository.com/artifact/org.apache.tika/tika-parsers -->
    <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-parsers</artifactId>
        <version>1.16</version>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/org.apache.tika/tika -->
    <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika</artifactId>
        <version>1.16</version>
        <type>pom</type>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/org.apache.tika/tika-core -->
    <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-core</artifactId>
        <version>1.16</version>
    </dependency>


    使用方法:

    try {
         Tika tika = new Tika();
         URL url = new URL(urlStrng);
         File file = new File("");
         InputStream inputStream = new FileInputStream(file);
         tika.parseToString(inputStream);
         tika.parseToString(file);
         tika.parseToString(url);
         //System.out.println(sb);
         return true;
     } catch (TikaException e) {
         e.printStackTrace();
         log.info(e.toString());
         return false;
     } catch (Exception e) {
         e.printStackTrace();
         log.error("合同号:{}", contranctId);
         return false;
     }


    如果校验损坏则会返回false

    校验成功则为true。


    展开全文
  • java文件损坏校验

    千次阅读 2018-11-22 19:52:20
    文件损坏校验 1.背景 出于项目业务的需求,需要对上传文件处理,服务端需要甄别损坏文件,去拦截。则需要对上传的文件去判断,疏于搜索水平,谷歌了下没找到好的方法。则思考了一种目前看来可行的判别方法。 2.思路...

    文件损坏校验

    1.背景

    出于项目业务的需求,需要对上传文件处理,服务端需要甄别损坏文件,去拦截。则需要对上传的文件去判断,疏于搜索水平,谷歌了下没找到好的方法。则思考了一种目前看来可行的判别方法。

    2.思路。

    根据文件名,通过字符串分隔,判断出文件的现用格式。再引入tika包,对文件的实际格式进行判断,则与现用格式比较,不同,则为格式强制转换等损坏文件,这样,就滤除了此类损坏的文件。

    3.过程。

    (1).项目里引入tika包

        <dependency>
    	    <groupId>org.apache.tika</groupId>
    	    <artifactId>tika</artifactId>
    	    <version>1.18</version>
    	    <type>pom</type>
    	</dependency>
    	<dependency>
    	    <groupId>org.apache.tika</groupId>
    	    <artifactId>tika-parsers</artifactId>
    	    <version>1.18</version>
    	</dependency>
    	<dependency>
           <groupId>org.apache.tika</groupId>
            <artifactId>tika-core</artifactId>
            <version>1.18</version>
        </dependency>
    

    (2).代码里使用

    以下截取部分代码以作示例,具体业务,根据自身业务需要,以做变化,如有好的idea,欢迎讨论沟通。

    Tika tika = new Tika();
    // 标识损坏文件数
    int n = 0;
    // 标识损坏文件位置
    int[] faultFlag = new int[multipartFiles.length];
    //multipartFiles是上传的文件数组,根据自己的需求来获取真实名称,此处为我的业务场景。
    String[] temp = multipartFiles[i].getOriginalFilename().split("\\.");
    //获取文件现用格式
    String fileType = temp[temp.length - 1];
    if ("doc".equals(fileType)) {
        // 正常doc:application/x-tika-msoffice ,正常txt:text/plain
        if (!"application/x-tika-msoffice".equals(tika.detect(multipartFiles[i].getInputStream()))) {
    				// 对损坏文件标识
    				faultFlag[i] = 1;
    				n++;
    			}
    
    展开全文
  • Java校验XML文件

    千次阅读 2018-09-14 10:06:42
    原文地址: https://zhangxingr.github.io/2018/09/13/Java%E6%A0%A1%E9%AA%8CXML%E6%96%87%E4%BB%B6/#more
  • JAVA - Execl文件校验

    2019-05-20 18:59:26
    通过POI魔数判断文件类型: public static boolean isExeclFile(InputStream inputStream){ boolean res = false; try { FileMagic fileMagic = FileMagic.valueOf(new BufferedInputStream(inputStream));.....
  • Java图片文件校验

    千次阅读 2019-07-29 21:52:43
    JPEG- 文件头标识 (2 bytes): 0xff, 0xd8 (SOI) (JPEG 文件标识)- 文件结束标识 (2 bytes): 0xff, 0xd9 (EOI) TGA- 未压缩的前5字节 00 00 02 00 00- RLE压缩的前5字节 00 00 10 00 00 PNG- 文件头标识 (8 bytes) 89...
  • 备份文件体积较大,为确保下载后的文件与原文件一致,需要提供文件完整性校验。 网上有这么多此类文章,其中不少使用到了 org.apache.commons.codec.digest.DigestUtils 包中的方法,但是又自己做了大文件的拆分...
  • Java Struts2配置文件校验

    千次阅读 2018-04-02 22:56:01
    struts2配置文件检验,想要实现校验,action必须继承自ActionSupport类,如下为简单登录注册校验。login.jsp&lt;%@ page language="java" import="java.util.*" pageEncoding="utf-8&...
  • Java MD5 文件校验处理

    千次阅读 2013-09-16 22:37:04
    有两种方式,一种比较优雅,大气,不过对于大文件需要进度条显示的情况不太合适, /*获取一个文件的md5码 */ public String getFileMD5String_ref(File file) throws Exception { messagedigest = MessageDigest....
  • java MD5文件校验工具类

    千次阅读 2018-06-28 14:02:24
    import java.io.*; import java.nio.*; import java.nio.channels.FileChannel; import java.security.*; public class MD5Util { protected static char[] hexDigits = { '0', '1', '2', '3', '4'...
  • java 校验文件头 判断虚假文件

    千次阅读 2016-01-22 15:47:59
    写博客只为技术的点滴积累 ... * 图片文件与视频文件检查  * @param imgname  * @param InputStream  * @param filename  * @return  */  public String checkImage(InputStream is, String fi
  • MD5 文件校验java 实现

    千次阅读 2017-01-13 15:30:45
    还不如自己写一个java类实现(当然,网上有现成的,直接copy 过来省了不少时间 (^-^)V) 以下 md5 校验的例子是从网上搜集过来的。可以直接拿来做工具类使用.(代码可以直接copy ,反正我也是直接copy 的 (⊙o⊙)~)
  • Java 注解校验

    千次阅读 2018-12-17 13:50:25
    java bean validation 参数验证 一、前言 二、几种解决方案 三、使用bean validation 自带的注解验证 四、自定义bean validation 注解验证 一、前言  在后台开发过程中,对参数的校验成为开发环境不可缺少的一个...
  • java自定义校验注解

    千次阅读 2020-07-17 11:04:15
    在日常的开发中可能会对手机号、邮箱、身份证号的合法性进行校验,然而每次使用if语句调用校验函数进行校验又显得过于麻烦,这时候自定义校验注解用处就很大了。此文编写一个对应0,1值的校验。 1、引入依赖 <...
  • Java 对上传文件进行魔数校验

    千次阅读 2020-07-09 14:51:25
    项目中接到魔数校验的需求,这篇文章(Java 通过魔数判断上传文件的类型)对我理解很有帮助,在此基础上,我重新写了工具类的处理,通过文件路径或者文件流获取文件类型(文件类型与对应的文件魔数枚举类).
  • 现在需要在java文件校验日期是否符合yyyy-mm-dd格式并且为有效日期,也就是说不能出现0000-00-00这种的错误形式,请问有没有什么好办法?另外,还要校验时间格式,时间格式为 xx:xx:xx,时间不允许出现24:00:00...
  • Java 对上传文件后缀格式的校验

    千次阅读 2019-05-09 11:36:15
    在web开发中,我们经常遇到一些上传文件的功能, 我们在对文件进行校验时,除了对文件大小进行校验外,还需要对文件的格式进行校验. 在对格式校验的时候要考虑到用户或者攻击者对文件后缀进行的改变,导致上传的文件并...
  • java数据校验

    千次阅读 2019-04-24 09:39:58
    在后台开发过程中,对参数的校验成为开发环境不可缺少的一个环节。比如参数不能为null,email那么必须符合email的格式,如果手动进行if判断或者写正则表达式判断无意开发效率太慢,在时间、成本、质量的博弈中必然...
  • Java文件的MD5校验和CRC校验

    千次阅读 2015-09-05 22:04:52
    1、CRC校验 使用7Z 开源SDK中提供的功能类 // SevenZip/CRC.java package SevenZip; public class CRC { static public int[] Table = new int[256]; static { for (int i = 0; i ; i++) { int r = i;...
  • java 进行文件的crc校验

    千次阅读 2018-12-12 13:55:59
    import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.zip.CRC32; import java.util.zip.Check....
  • Java调用Schema校验xml文件

    千次阅读 2017-04-14 17:40:31
    最近项目用到了xml文件传输(系统与系统之间)并用schema校验XML 特此做下记录: ** 自己写了一个工具类public class XmlValidateUtil { private static final Log logger = LogFactory.getLog(XmlValidateUtil....
  • Java 实现校验和(Checksum)

    千次阅读 2020-09-15 08:54:32
    Java 实现校验和(Checksum) 本文简要解释什么是校验和以及如何在java中计算校验和。 1. 校验和及实现算法 校验和是指传输位数的累加,当传输结束时,接收者可以根据这个数值判断是否接到了所有的数据。如果数值匹配...
  • 利用md5对上传文件进行散列得到相应编码,怎么实现? 能否实现 断点上传(不是断点下载)? 最近遇到这两问题,不知怎么解决。 永远相信美好的事情即将发生。
  • JAVA文件类型的校验

    2016-08-07 23:13:53
    第一步:编写一个枚举,在网上可以找到一些文件后缀所对应的前6位编码,例如JPEG对应的是FFD8FF   package com.ssh.pm_mark.core.test; public enum FileType { /** * JEPG. */ ...
  • 最近做了一个附件上传下载删除的功能,特地把关键代码记录下来,方便以后复用,也分享给大家!... 附件上传:(提示:单个文件上传不得超过10M) 添加附件 " style="padding:3px"> ')" >

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 167,168
精华内容 66,867
关键字:

java文件校验

java 订阅